[6.2] Media: fix large file upload by using of binary upload instead of base64, and display correct upload progress#44848
[6.2] Media: fix large file upload by using of binary upload instead of base64, and display correct upload progress#44848Fedik wants to merge 28 commits intojoomla:6.2-devfrom
Conversation
|
I like that change, but this will break 3rd party extensions when the data can be all of the sudden a resource. I would read the file content it in the api controller and then pass it to the adapter the same way as before that no changes are needed in the adapter. Additionally, the check content logic can probably be moved to the, but not sure about this. |
@laoneo Moved to the ... what? |
|
ApiController |
|
Hmhm,
No no, this not going to work, you will get "out of memory" error when try to read 100Mb file when PHP limit is 60Mb. What about stringable object? |
|
Not sure if stringable would solve it. But I think the main goal should be to do it in a bc way. |
|
I updated the code to use stringable object. Would be good to have some more test, to be sure, with 3rd filesystem adapters. |
|
I have not tested this item. This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44848. |
|
I have not tested this item. This comment was created with the J!Tracker Application at issues.joomla.org/tracker/joomla-cms/44848. |
|
This pull request has been automatically rebased to 6.1-dev. |
Conflicts: api/components/com_media/src/Controller/MediaController.php
|
@pesc you can download recent testing build here https://artifacts.joomla.org/drone/joomla/joomla-cms/6.1-dev/44848/downloads/90884/ Then after testing visit https://issues.joomla.org/tracker/joomla-cms/44848 and click "Test this" button at top. |
|
This pull request has been automatically rebased to 6.2-dev. |
|
This pull request has conflicts, please resolve those before we can evaluate the pull request. |
Summary of Changes
The PR changes the media manager to use FormData for file upload, instead of base64 payload.
Which improves responsiveness, performance and handling of large files in general.
However the api/ calls still uses base64 because it is hard to do in b/c maner.
Bonus: the upload progres now showing actual upload progress.
Testing Instructions
Apply patch.
Run
npm install.Go to media manager and try upload something bigger than 100Mb
Addittionaly, test with any 3d filesystem plugin.
Actual result BEFORE applying this Pull Request
The browser hangs for a while, and dependent from your luck the upload will be completed after some waiting.
Expected result AFTER applying this Pull Request
The upload starts immediately, and you can see progress (a litle 5px blue line over the files list)
Link to documentations
Please select: