【问题标题】:Prevent Upload before POST if file is too large with PHP如果 PHP 文件太大,请在 POST 之前阻止上传
【发布时间】:2020-11-01 00:02:38
【问题描述】:

此脚本用于上传小于 2MB 的图像文件。我想在文件上传之前检查文件大小。因为我尝试显示此警告,如果上传文件大小超过 20MB:

警告:20402819 字节的 POST 内容长度超过了 Unknown on line 0 中 8388608 字节的限制

我不想更改 php.ini 文件以增加最大上传文件大小...我不想上传超过 2MB。

请帮忙....

if(isset($_FILES['image'])){
  $errors= array();
  $file_name = $_FILES['image']['name'];
  $file_size =$_FILES['image']['size'];
  $file_tmp =$_FILES['image']['tmp_name'];
  $file_type=$_FILES['image']['type'];
  $file_ext= explode('.',$_FILES['image']['name']);
  $file_ext= $file_ext[count($file_ext)-1];
  $file_ext= strtolower(end(explode('.',$_FILES['image']['name'])));
  
  $extensions= array("jpeg","jpg","png");
  
  if(in_array($file_ext,$extensions)=== false){
     $errors[]="extension not allowed, please choose a JPEG or PNG file.";
  }
  
  if($file_size > 2097152){
    $errors[] = 'File size must not exceed 2 MB.';
  }
  if(!empty($filename)){
    $errors[] = "Please choose a file before you upload.";
  }
  
  if(empty($errors)==true){
    move_uploaded_file($file_tmp,"uploads/" . $file_name);
    $file_location = "uploads/" . $file_name;
    submitFile($file_location);
  }else{
     print_r($errors);
  }

}

【问题讨论】:

  • 这在 php 中是无能为力的。您需要在客户端执行此操作,因此使用 javascript 来检查请求 before 它甚至被发送。

标签: php post file-upload


【解决方案1】:

不确定您使用的是什么(如果有的话)JS 框架,但 jQuery 可以做到这一点。您需要在客户端覆盖您的提交事件处理程序,并执行以下操作:

<input type="file" id="file-select" />
//you might need additional properties on ^
const upload_limit = 2; //MB
jQuery("#file-select").on('change', function() {
    const size = this.files[0].size / 1024 / 1024;
    if (size < upload_limit) { return true; }
    else { alert("File size is " + size + " MB, please select a smaller file."); return false;}
}

这只是一个示例,实际上最好将函数添加为提交事件的一部分,并在函数的输出为假(和/或您的其他验证)时阻止提交。

【讨论】:

    猜你喜欢
    • 2020-03-13
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多