php 文件上传 error 4,php – 处理Laravel 4上传大文件异常

这篇博客探讨了在Laravel框架中处理大文件上传时遇到的问题,特别是当文件大小超过PHP的upload_max_filesize和post_max_size设置时。文章提供了代码示例,展示了如何检查并捕获这两种情况下的错误,返回合适的错误消息,并确保文件上传过程的正确性。作者通过检查$_FILES和$_POST变量以及服务器请求方法,解决了在没有抛出异常的第二种情况下识别文件过大问题。
摘要由CSDN通过智能技术生成

有两种情况:文件大小大于php变量upload_max_filesize,第二种情况是大于post_max_size变量.在第一个例子中引发了一个例外,因此它很容易捕获它.在第二种情况下没有例外,我使用this问题来解决它.

现在,检查此代码:在Laravel控制器aciton方法中.我认为控制器动作中的代码从未被执行过,但我错了.所以最后这是一种解决这个问题的方法:

public function upload_file()

{

$file_max = ini_get('upload_max_filesize');

$file_max_str_leng = strlen($file_max);

$file_max_meassure_unit = substr($file_max,$file_max_str_leng - 1,1);

$file_max_meassure_unit = $file_max_meassure_unit == 'K' ? 'kb' : ($file_max_meassure_unit == 'M' ? 'mb' : ($file_max_meassure_unit == 'G' ? 'gb' : 'unidades'));

$file_max = substr($file_max,0,$file_max_str_leng - 1);

$file_max = intval($file_max);

//handle second case

if((empty($_FILES) && empty($_POST) && isset($_SERVER['REQUEST_METHOD']) && strtolower($_SERVER['REQUEST_METHOD']) == 'post'))

{ //catch file overload error...

//grab the size limits...

return json_encode(array('success'=>false, 'message'=>sprintf('The file size should be lower than %s%s.',$file_max,$file_max_meassure_unit)));

}

try{

if (!Input::hasFile('file'))

return;

$utils = App::make('utils');

$file = Input::file('file');

$name = Input::get('name');

$size = $file->getSize();

if ($size > $file_max)

return json_encode(array('success'=>false, 'message'=>sprintf('El tama?o del archivo debe ser menor que %smb.',$file_max)));

$original_file_name = $file->getClientOriginalName();

$destination_directory = "";

$final_file_name = $utils->copy_file_to_location($file);

return json_encode(array('success'=>true, 'file'=>$original_file_name));

}

catch (Exception $e)

{

//handle first case

return json_encode(array('success'=>false, 'message'=>sprintf('The file size should be lower than %s%s.',$file_max,$file_max_meassure_unit)));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值