如何在Laravel 5中通过干预图像上传大尺寸图像
我正在我的项目中使用 我的应用程序在上传小尺寸图像时运行平稳。但当我尝试上传大尺寸图像(>2mb)时,我的应用程序停止工作 即使它没有显示出正确的错误。有时它显示如何在Laravel 5中通过干预图像上传大尺寸图像,laravel,laravel-5,intervention,Laravel,Laravel 5,Intervention,我正在我的项目中使用 我的应用程序在上传小尺寸图像时运行平稳。但当我尝试上传大尺寸图像(>2mb)时,我的应用程序停止工作 即使它没有显示出正确的错误。有时它显示令牌不匹配错误&有时url不重定向 如何修复它?我不知道 这是我的密码: $post->new Post(); if($request->hasFile('image')){ $image=$request->file('image'); $filename=Auth::user()->id.'
令牌不匹配错误&有时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();
我正在使用图像干预
上传图像。但你也可以建议它的替代方案
谢谢 实际上,这是服务器端在php.ini
文件中设置变量值的问题。如果上传的内容超过服务器的post_max_size设置,则输入将为空,您将得到令牌不匹配错误
根据需要更改upload\u max\u filesize
,post\u max\u size
值,然后重新启动服务器。结果表明这是内存问题。如果您查看错误日志,您会发现服务器内存不足。你会看到类似的东西
PHP Fatal error: Allowed memory size of XXXXXXXX bytes exhausted (tried to allocate XXXXX bytes) in ...
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;
}
由于干涉图像逐像素读取整个图像,并将数据保存在内存中,因此像2MB这样看似很小的图像最终可能需要几十MB的内存来处理
您可能需要将内存限制设置为可用的最高值,并在打开文件之前检查文件大小,因为一个站点如果没有错误消息就中断了,那将很尴尬。使用类似
PHP Fatal error: Allowed memory size of XXXXXXXX bytes exhausted (tried to allocate XXXXX bytes) in ...
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;
}
if($request->hasFile('image')&&&$request->file('image')->getClientSize()<2097152){
$image=$request->file('image');
$filename=Auth::user()->id.''时间().$image->getClientOriginalExtension();
$location=public_路径('images/'。$filename);
图像::生成($Image)->保存($location);
$post->image=$filename;
}
我已经更改了上传最大文件大小=100M
和上传最大文件大小=20M
,并重新启动了服务器。在那之后,我尝试上传一张jpeg
图像(4.04M)。现在它没有显示任何错误,但当我提交表单时,一个空白页面出现&毕竟图像没有上传。你能解释一下吗?希望你在调试打开时检查一下。也看看和。这可能会对您有所帮助。出现了这个确切的错误(大文件图像上载时令牌不匹配),并更改了答案中指出的两个ini设置。这成功地解决了问题。谢谢@AddWeb