【问题标题】:How to upload large size image by Intervention Image in Laravel 5如何在 Laravel 5 中通过 Intervention Image 上传大尺寸图片
【发布时间】:2020-03-19 05:00:25
【问题描述】:

我在我的项目中使用Image Intervention

我的应用程序在上传小尺寸图片时运行顺畅。但是当我尝试上传大尺寸图片(>2mb)时,我的应用程序停止工作!

即使它没有显示正确的错误。有时它会显示Token mismatch 错误,有时 url 不会重定向。

如何解决?我不知道。

这是我的代码:

$post->new Post();

if($request->hasFile('image')){
    $image=$request->file('image');
    $filename=Auth::user()->id.'_'.time().'.'.$image->getClientOriginalExtension();
    $location=public_path('images/'.$filename);
    Image::make($image)->save($location);

    $post->image=$filename;
}

$post->save();

我正在使用Image intervention 上传图片。但您也可以提出替代方案。

谢谢!

【问题讨论】:

    标签: laravel laravel-5 intervention


    【解决方案1】:

    实际上这是服务器端将变量值设置为php.ini 文件的问题。如果您上传更多,那么您的服务器的 post_max_size 设置输入将为空,您将收到 Token mismatch 错误。

    根据您的需要更改 upload_max_filesizepost_max_size 值并重新启动服务器。

    【讨论】:

    • 我更改了upload_max_filesize=100M & post_max_size=20M 并重新启动了服务器。之后我尝试上传jpeg 图像(4.04M)。现在它没有显示任何错误,但是当我提交表单时,会出现一个空白页面,并且毕竟图像没有上传。你能解释一下吗?
    • 希望您在打开调试的情况下进行检查。另请查看ini.memory limitini.upload-max-filesize。希望对您有所帮助。
    • 有这个确切的错误(大文件图像上传时的令牌不匹配)并更改了答案中提到的两个 ini 设置。这成功地解决了这个问题。谢谢@AddWeb
    【解决方案2】:

    原来这是一个内存问题。如果您检查错误日志,您会看到服务器内存不足。你会看到类似

    PHP Fatal error:  Allowed memory size of XXXXXXXX bytes exhausted (tried to allocate XXXXX bytes) in ...
    

    由于 Intervention Image 会逐个像素地读取整个图像并将数据保存在内存中,因此看似 2MB 的小图像最终可能需要数十 MB 的内存来处理。

    您可能需要将内存限制设置为可用的最高内存限制,并在打开文件之前检查文件大小,因为网站在没有错误消息的情况下中断是令人尴尬的。使用类似的东西

    if( $request->hasFile('image') && $request->file('image')->getClientSize() < 2097152 ){
        $image=$request->file('image');
        $filename=Auth::user()->id.'_'.time().'.'.$image->getClientOriginalExtension();
        $location=public_path('images/'.$filename);
        Image::make($image)->save($location);
    
        $post->image=$filename;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      相关资源
      最近更新 更多