在 Laravel 8 中上传一个大文件会返回一个空文件,其 mimeType 为 application/octet-stream。

4

我试图在 Laravel 8 中上传图片,但对于大文件会失败。

我的控制器中有以下代码:

    public function uploadTemporaryFile(Request $request)
     {
         $request->validate([
           'image' => 'required|mimes:png,jpeg,jpg',
         ])
         $file = $request->file('image');

         //do more stuff here

      }

以上适用于较小的图像文件,但大型图像文件8MB验证失败。经过一些故障排除和记录大型文件上的$request后,我发现问题出在此处。
var_dump($request);

 array (
 'image' => 
   Illuminate\Http\UploadedFile::__set_state(array(
    'test' => false,
    'originalName' => 'IMG_20201203_072650.jpg',
    'mimeType' => 'application/octet-stream',
    'error' => 1,
    'hashName' => NULL,
   )),
  )  

根据上述大图像文件,MIME类型似乎从image/jpeg变为application/octet-stream。 上传小图像所使用的相同代码被用来上传大图像文件。由于应用程序/八位流,现在$request->file("image")为空。当上传大图像文件时,如何获取已上传的文件以进行保存?或者我缺少了什么东西。
我还将upload_max_filesizepost_max_size都调整为100M。

你的网络服务器是什么?必须在网络服务器(nginx或apache)中设置上传大小。 - sajjad
我正在使用nginx,并设置了上传大小。 - Geoff
这里有任何解决方案吗? - Adelin
1个回答

0
upload_max_filesize
post_max_size

只需在php.ini文件中将这些变量设置为大于要上传的文件的值即可。

注意:修改正确的php.ini文件(FPM、Nginx、Apache、CLI和正确的PHP版本),然后重新启动您的Web服务器/fpm。要确认您已更改正确的文件,请运行:

phpinfo(); 

并查找这些值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接