• Extensions
  • FriendsOfFlarum upload, the intelligent file attachment extension

I deleted older records from fof_upload_files table and now everything works. I suspect FOF Upload didn't like that many fields were empty in the records from >10 years ago. I'll experiment more to find out which fields exactly.

    SnakePromise glad you found a way to get it working!

    It's been a while since we worked with the older versions so there could still be issues with the way old data is migrated into the latest version of the extension. We do most of our tests with new installations and have been progressively dropping backward compatibility with some of the older features, though we try to always do that in a way that silently fails without disturbing the other features.

    The error above is very curious because I can't see how invalid data could end up there. Maybe you have older tag/bbcode names in your database that we no longer use?

    My hypothesis — if the 'tag' field is NULL for any of the actor_id images, you get the error I described above.

    I imported all records back into the database, changed all 'tag' NULL values to an empty value '' and now everything works.

    Maybe the code checks the tag field somewhere, expects it can be an empty string, but doesn't expect it could be NULL?

      Spoke too soon, the 'tag' field must contain something, otherwise inserting from Media manager doesn't work (it inserts null).

      So I executed:

      UPDATE `fof_upload_files` SET tag='image-preview' where type REGEXP 'image.*';
      UPDATE `fof_upload_files` SET tag='file' where type REGEXP 'application.*';

      And now everything works. 🙂

      EDIT — no, it doesn't. 😅

      While image insertions from Media manager work, seems that file uploads need uuid, otherwise they are not formatted as download links but just show as [upl-file uuid= size=10MB]my_old_uploaded_pdf.pdf[/upl-file] in the comment text.

      How do I generate uuids for uploads which are missing this field?

        SnakePromise if the 'tag' field is NULL for any of the actor_id images, you get the error I described above

        Thanks! That explains it. There's some code that retrieves an array element by key, but when the key is null the method returns the full array, so that explains how an array can end up where it causes an error.

        SnakePromise How do I generate uuids for uploads which are missing this field?

        How many records do you have? (without UUID). You could use an online UUID4 generator and just copy-paste a unique value for each missing value.

        I don't think it really needs to be a UUID, so you could use any unique value, maybe with an incrementing integer. For example import1, import2, etc.

          clarkwinkelmann

          I have several thousands of such records missing uuid, so I just did:

          UPDATE `fof_upload_files` SET uuid=id WHERE uuid IS NULL;

          Hopefully it will not lead to any problems. Seems to be working so far.

          Hello! I reported a bug on Github , any plan to fix it?

          • SZSZ replied to this.

            My flarum is 1.0.2 and I find it that my upload cannot use S3 to store pictures.

              5 days later

              I'm having some difficulty configuring this and I was hoping someone here could help.

              Mimetype regular expression

              Regular expressions allow you a lot of freedom, but they are also very difficult to understand. Here are some pointers, but feel free to ask
              for help on the official Flarum forums.
              In case you want to allow all regular file types including video, music, compressed files and images, use this:
              (video\/(3gpp|mp4|mpeg|quicktime|webm))|(audio\/(aiff|midi|mpeg|mp4))|(image\/(gif|jpeg|png))|(application\/(x-(7z|rar|zip)-compressed|zip|arj|x-(bzip2|gzip|lha|stuffit|tar)|pdf))

              I tried plugging this into the first mime type slot in my Upload settings and it seemed to work. However, archives and .pdf files would not show up at all when embedded. Upload would treat them like images (I think?) and it would fail.

              Is there a way I can make images and videos work with the "Complete image preview template" while archive + .pdf files show up with the "Default file download template"? What strings exactly would I need to put in these fields to accomplish this?

              Intuitively I tried to split up the image and video portion of this string from the archive and other file section in an attempt to give the file upload template to archives and pdf files. This did not work. This resulted in archives and .pdf not being allowed to be uploaded. I assume I have the formatting wrong somehow.

              This is what I have in the "Complete image preview template" field:
              (video\/(3gpp|mp4|mpeg|quicktime|webm))|(audio\/(aiff|midi|mpeg|mp4))|(image\/(gif|jpeg|png))

              This is what I have in the "Default file download template":
              (application\/(x-(7z|rar|zip)-compressed|zip|arj|x-(bzip2|gzip|lha|stuffit|tar)|pdf))

                Blum you need to click the plus for the second entry to make it active. I will review the regexes when I'm behind a pc.

                Blum This is what I have in the "Complete image preview template" field:
                (video\/(3gpp|mp4|mpeg|quicktime|webm))|(audio\/(aiff|midi|mpeg|mp4))|(image\/(gif|jpeg|png))

                This is what I have in the "Default file download template":
                (application\/(x-(7z|rar|zip)-compressed|zip|arj|x-(bzip2|gzip|lha|stuffit|tar)|pdf))

                I tried to simplify the second one:

                application\/(x-)?(7z-compressed|rar|zip|pdf)

                Let me know whether that works.

                • Blum replied to this.

                  luceos Thank you so much for the tip about pressing the plus button to get the second line to save. That got it to do what I was hoping for with archives.

                  I'd like to ask one more thing if that's okay. I was hoping to get audio files to work with the file download template as well but am running into not being allowed to upload them with the following setup. My syntax has to be incorrect right? These expressions are like a foreign language to me. I have no idea what I'm doing. 😅

                  (video\/(3gpp|mp4|mpeg|quicktime|webm))|(image\/(gif|jpeg|png))
                  application\/(x-)?(7z-compressed|rar|zip|pdf)
                  audio\/(aiff|midi|mp3|ogg|wav|flac)

                    Blum you have to google the mimetype of each file type you want to use. That's the best way to get them to be uploadable. Eg google mimetype mp3 returns a stackoverflow discussion suggesting audio/mpeg in regex that would be audio\/mpeg, in your existing rule audio\/(aiff|midi|mpeg|ogg|wav|flac).

                    I am crying... Why I can't upload a picture to the local?

                    php flarum info:

                    Flarum core 1.0.2
                    PHP version: 7.3.28
                    Loaded extensions: Core, date, libxml, openssl, pcre, sqlite3, zlib, bcmath, ctype, curl, dom, filter, ftp, gd, gettext, hash, iconv, intl, json, mbstring, SPL, session, pcntl, standard, PDO, mysqlnd, pdo_sqlite, Phar, posix, Reflection, pdo_mysql, shmop, SimpleXML, soap, sockets, sodium, mysqli, sysvsem, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, zip, fileinfo, Zend OPcache
                    +--------------------------------+---------+--------+
                    | Flarum Extensions | | |
                    +--------------------------------+---------+--------+
                    | ID | Version | Commit |
                    +--------------------------------+---------+--------+
                    | flarum-flags | v1.0.0 | |
                    | flarum-suspend | v1.0.0 | |
                    | flarum-tags | v1.0.3 | |
                    | flarum-approval | v1.0.0 | |
                    | fof-upload | 1.0.1 | |
                    | fof-share-social | 1.0.0 | |
                    | fof-sitemap | 1.0.0 | |
                    | v17development-seo | v1.8.0 | |
                    | akr-chevereto | 1.0.1 | |
                    | flarum-lang-chinese-simplified | v1.0.1 | |
                    | fof-user-bio | 1.0.0 | |
                    | fof-links | 1.0.0 | |
                    | ianm-syndication | 1.0.1 | |
                    | flarum-embed | v1.0.0 | |
                    | flarum-lock | v1.0.0 | |
                    | flarum-mentions | v1.0.0 | |
                    | flarum-pusher | v1.0.0 | |
                    | flarum-sticky | v1.0.0 | |
                    | flarum-subscriptions | v1.0.0 | |
                    | flarum-statistics | v1.0.0 | |
                    | flarum-nicknames | v1.0.0 | |
                    | flarum-markdown | v1.0.1 | |
                    | flarum-likes | v1.0.0 | |
                    | flarum-emoji | v1.0.0 | |
                    | flarum-bbcode | v1.0.0 | |
                    | flarum-akismet | v1.0.0 | |
                    | fof-formatting | 1.0.0 | |
                    | fof-pages | 1.0.1 | |
                    | fof-user-directory | 1.0.1 | |
                    | nearata-twofactor | v2.0.0 | |
                    | antoinefr-money | v1.0.0 | |
                    | askvortsov-pwa | v3.0.3 | |
                    +--------------------------------+---------+--------

                    and debug:

                    Intervention\Image\Exception\NotSupportedException: Reading Exif data is not supported by this PHP installation. in /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/Commands/ExifCommand.php:22
                    Stack trace:
                    #0 /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php(94): Intervention\Image\Commands\ExifCommand->execute(Object(Intervention\Image\Image))
                    #1 /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/Image.php(108): Intervention\Image\AbstractDriver->executeCommand(Object(Intervention\Image\Image), 'exif', Array)
                    #2 /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/Commands/OrientateCommand.php(15): Intervention\Image\Image->__call('exif', Array)
                    #3 /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/AbstractDriver.php(94): Intervention\Image\Commands\OrientateCommand->execute(Object(Intervention\Image\Image))
                    #4 /www/wwwroot/www.mysite.com/vendor/intervention/image/src/Intervention/Image/Image.php(108): Intervention\Image\AbstractDriver->executeCommand(Object(Intervention\Image\Image), 'orientate', Array)
                    #5 /www/wwwroot/www.mysite.com/vendor/fof/upload/src/Processors/ImageProcessor.php(69): Intervention\Image\Image->__call('orientate', Array)
                    #6 /www/wwwroot/www.mysite.com/vendor/fof/upload/src/Listeners/AddImageProcessor.php(33): FoF\Upload\Processors\ImageProcessor->process(Object(FoF\Upload\File), Object(Symfony\Component\HttpFoundation\File\UploadedFile), 'image/png')
                    #7 /www/wwwroot/www.mysite.com/vendor/illuminate/events/Dispatcher.php(412): FoF\Upload\Listeners\AddImageProcessor->handle(Object(FoF\Upload\Events\File\WillBeUploaded))
                    #8 /www/wwwroot/www.mysite.com/vendor/illuminate/events/Dispatcher.php(237): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}('FoF\\Upload\\Even...', Array)
                    #9 /www/wwwroot/www.mysite.com/vendor/fof/upload/src/Commands/UploadHandler.php(128): Illuminate\Events\Dispatcher->dispatch('FoF\\Upload\\Even...')
                    #10 [internal function]: FoF\Upload\Commands\UploadHandler->FoF\Upload\Commands\{closure}(Object(FoF\Upload\File), 0)
                    #11 /www/wwwroot/www.mysite.com/vendor/illuminate/collections/Collection.php(642): array_map(Object(Closure), Array, Array)
                    #12 /www/wwwroot/www.mysite.com/vendor/fof/upload/src/Commands/UploadHandler.php(169): Illuminate\Support\Collection->map(Object(Closure))
                    #13 /www/wwwroot/www.mysite.com/vendor/illuminate/bus/Dispatcher.php(122): FoF\Upload\Commands\UploadHandler->handle(Object(FoF\Upload\Commands\Upload))
                    #14 /www/wwwroot/www.mysite.com/vendor/illuminate/pipeline/Pipeline.php(128): Illuminate\Bus\Dispatcher->Illuminate\Bus\{closure}(Object(FoF\Upload\Commands\Upload))
                    #15 /www/wwwroot/www.mysite.com/vendor/illuminate/pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(FoF\Upload\Commands\Upload))
                    #16 /www/wwwroot/www.mysite.com/vendor/illuminate/bus/Dispatcher.php(132): Illuminate\Pipeline\Pipeline->then(Object(Closure))
                    #17 /www/wwwroot/www.mysite.com/vendor/illuminate/bus/Dispatcher.php(78): Illuminate\Bus\Dispatcher->dispatchNow(Object(FoF\Upload\Commands\Upload))
                    #18 /www/wwwroot/www.mysite.com/vendor/fof/upload/src/Api/Controllers/UploadController.php(52): Illuminate\Bus\Dispatcher->dispatch(Object(FoF\Upload\Commands\Upload))
                    #19 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Api/Controller/AbstractSerializeController.php(110): FoF\Upload\Api\Controllers\UploadController->data(Object(Laminas\Diactoros\ServerRequest), Object(Tobscure\JsonApi\Document))
                    #20 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): Flarum\Api\Controller\AbstractSerializeController->handle(Object(Laminas\Diactoros\ServerRequest))
                    #21 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http\{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
                    #22 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\ExecuteRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
                    #23 /www/wwwroot/www.mysite.com/vendor/nearata/flarum-ext-twofactor/src/Http/Middleware/AuthenticateWithTwoFactor.php(37): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #24 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Nearata\TwoFactor\Http\Middleware\AuthenticateWithTwoFactor->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #25 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #26 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Api\Middleware\ThrottleApi->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #27 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #28 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #29 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(67): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #30 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\ResolveRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #31 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #32 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #33 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(56): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #34 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\AuthenticateWithHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #35 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #36 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #37 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #38 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #39 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #40 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #41 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #42 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Api\Middleware\FakeHttpMethods->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #43 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #44 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #45 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #46 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #47 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #48 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\InjectActorReference->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #49 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #50 /www/wwwroot/www.mysite.com/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #51 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #52 /www/wwwroot/www.mysite.com/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #53 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #54 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(42): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #55 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #56 /www/wwwroot/www.mysite.com/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #57 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #58 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #59 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/Next.php(61): Flarum\Http\Middleware\ProcessIp->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                    #60 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(84): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                    #61 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(73): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
                    #62 /www/wwwroot/www.mysite.com/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(96): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
                    #63 /www/wwwroot/www.mysite.com/vendor/flarum/core/src/Http/Server.php(44): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
                    #64 /www/wwwroot/www.mysite.com/public/index.php(26): Flarum\Http\Server->listen()
                    #65 {main}

                    Please who can help me? Thank you!

                      Star change your php version to at least 7.4, version 8 is preferable.
                      Then ensure that the directory you're storing your files is chmod 755.

                      1.0.2

                      Changes

                      • Add BBCode image template
                      • Add Markdown image template
                      • Updates JS dependencies

                      BBCode image template:

                      [URL=<image url>][IMG]<image url>[/IMG][/URL]

                      Markdown image template:

                      ![Image description](<image url>)

                      Updating

                      composer require fof/upload:"*"
                      php flarum cache:clear
                      7 days later

                      The uploaded attachment cannot be displayed in Chinese. How to solve it

                        7 days later

                        Configure your mime type, upload adapter mapping

                        Complete image preview template
                        (video\/(3gpp|mp4|mpeg|quicktime|webm))|(audio\/(aiff|midi|mpeg|mp4))|(image\/(gif|jpeg|png))

                        default file download template
                        (application\/pdf)|(application\/(x-(7z|rar|zip)-compressed|zip|arj|x-(bzip2|gzip|lha|stuffit|tar)|pdf))|(application\/vnd.openxmlformats-officedocument.wordprocessingml.document|docx)|(application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet|xlsx)|(application\/vnd.ms-excel|xls)|(application\/msword|doc)

                        working perfect for local

                        6 days later

                        SZSZ Seems this issue still exist in the latest version.😟


                        I set up imgur but when I save it to local.
                        i imported imgur api.