当前位置: 首页 > 面试题库 >

如何在PHP中限制文件上传类型的文件大小?

东门子昂
2023-03-14
问题内容

我有一个上传表单,正在检查文件大小和文件类型,以将上传的文件限制为2
MB,以及.pdf,.jpg,.gif或.png文件类型。我的目标是在用户违反这些规则之一的情况下向他们显示警报消息。

有四种方案:

  1. 正确的尺寸/正确的类型(工作中)
  2. 正确的尺寸/不正确的类型(工作中)
  3. 尺寸/类型 正确( 不起作用
  4. 不正确的大小/ 不正确的 类型( 不起作用

使用我当前的代码,即使文件类型正确(#3),当文件大小大于2兆字节(#4)时,它始终显示不正确的“类型”消息。

有什么想法吗?

if (isset ( $_FILES['uploaded_file'] ) ) {

    $file_size = $_FILES['uploaded_file']['size'];
    $file_type = $_FILES['uploaded_file']['type'];

    if (($file_size > 2097152)){      
        $message = 'File too large. File must be less than 2 megabytes.'; 
        echo '<script type="text/javascript">alert("'.$message.'");</script>'; 
    }
    elseif (  
        ($file_type != "application/pdf") &&
        ($file_type != "image/jpeg") &&
        ($file_type != "image/jpg") &&
        ($file_type != "image/gif") &&
        ($file_type != "image/png")    
    ){
        $message = 'Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.'; 
        echo '<script type="text/javascript">alert("'.$message.'");</script>';         
    }    
    else {
        store_uploaded_file($id);
    }

}

问题答案:

您的代码未解决的问题是显示多个错误。如上所述,用户可能会上传错误类型> 2MB的文件,但是您的代码只能报告其中一个问题。尝试类似的方法

if(isset($_FILES['uploaded_file'])) {
    $errors     = array();
    $maxsize    = 2097152;
    $acceptable = array(
        'application/pdf',
        'image/jpeg',
        'image/jpg',
        'image/gif',
        'image/png'
    );

    if(($_FILES['uploaded_file']['size'] >= $maxsize) || ($_FILES["uploaded_file"]["size"] == 0)) {
        $errors[] = 'File too large. File must be less than 2 megabytes.';
    }

    if((!in_array($_FILES['uploaded_file']['type'], $acceptable)) && (!empty($_FILES["uploaded_file"]["type"]))) {
        $errors[] = 'Invalid file type. Only PDF, JPG, GIF and PNG types are accepted.';
    }

    if(count($errors) === 0) {
        move_uploaded_file($_FILES['uploaded_file']['tmpname'], '/store/to/location.file');
    } else {
        foreach($errors as $error) {
            echo '<script>alert("'.$error.'");</script>';
        }

        die(); //Ensure no more processing is done
    }
}

move_uploaded_file()有关更多信息,请参阅文档(称为“移动不存储”)。



 类似资料:
  • 问题内容: 我有以下代码来检查(上传的简历和推荐信是否与所需类型(pdf或doc或docx)匹配)和大小(小于400 kb) 这无法正常工作,甚至连txt文件都没有通过+大小限制,这是怎么回事? 谢谢, 问题答案: 下面仅使用mime类型来验证文件,然后检查两者的大小。有关大多数MIME类型的列表,请参见此处或google。

  • 问题内容: 我想让jQuery将文件上传字段限制为仅jpg / jpeg,png和gif。我已经在进行后端检查了。我已经通过函数运行了提交按钮,因此我真的只需要知道在提交或发出警报之前如何检查文件类型。 问题答案: 您可以获得与任何其他字段相同的文件字段的值。但是,您无法更改它。 因此,要 表面 检查文件的扩展名是否正确,可以执行以下操作:

  • 本文向大家介绍php限制上传文件类型并保存上传文件的方法,包括了php限制上传文件类型并保存上传文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php限制上传文件类型并保存上传文件的方法。分享给大家供大家参考。具体如下: 下面的代码演示了php中如何获取用户上传的文件,并限制文件类型的一般图片文件,最后保存到服务器 希望本文所述对大家的php程序设计有所帮助。

  • 问题内容: 我得到这个错误说 上传大约30MB的视频时, 这是设置代码 不确定如何设置maxFieldsSize属性,需要一些帮助!!! 问题答案: Express使用连接中间件,您可以使用以下命令指定文件上传大小 连接限制中间件

  • 问题内容: 在PHP网站上,他们建议的唯一实际检查是使用或,这里。当然,出于多种原因,您通常不希望用户上传任何类型的文件。 因此,我经常使用一些“严格”的MIME类型检查。当然,这是非常有缺陷的,因为通常哑剧类型是错误的,并且用户无法上传其文件。伪造和/或更改也非常容易。除此之外,每种浏览器和操作系统对它们的处理方式也不同。 另一种方法是检查扩展名,这当然比mime类型更容易更改。 如果只需要图像

  • 我犯了个错误 当上传一段大约30MB的视频时, 这里是设置代码 我不知道如何设置maxFieldsSize属性,需要帮助!!!