【问题标题】:restricting the uploading files size in php在php中限制上传文件的大小
【发布时间】:2012-10-31 06:04:54
【问题描述】:

我正在使用 PHP 中的多个文件上传,我还在上传表单 PHP 文件中使用以下 HTML 命令修复了 10MB 的上传限制:

   <input type="hidden" name="MAX_FILE_SIZE" value="10000000"> 
   <input id="infile" type="file" name="infile[]" multiple="true" />

在负责上传功能的 PHP 文件中,我最初期望如果我尝试上传大小大于 10MB 的文件,那么函数调用语句

   move_uploaded_file($_FILES['infile']['tmp_name'][$i], $dir . $fPath);

会失败,我会显示“上传文件大小小于 10MB 时出错”消息。但它没有发生。它正在尝试上传,但没有按预期显示任何错误消息。

所以我尝试通过使用 if 语句在代码中专门限制文件大小:

  if ($_FILES["infile"]["size"][$i]<10000000) 
    {
       move_uploaded_file($_FILES['infile']['tmp_name'][$i], $dir . $fPath);
    }
  else
    echo "error";

但它仍然没有像预期的那样回显错误。谁能指出我在这里做的错误?

【问题讨论】:

  • 您确定您的文件超过 10,000,000 字节吗?也许它显示为 10MB,四舍五入?
  • MAX_FILE_SIZE 仅用于 PHP 上传后检查。正确的方法是通过php.ini或ini_set函数设置系统参数
  • 感谢您的 cmets,但如果文件大小超过 10MB,我在此处提到的代码中的 if 语句不应该出现“错误”消息。另外我忘了提到大于 10MB 的文件没有上传到这里。
  • 你能把表格的html部分贴出来吗....
  • 对不起,这里是主要部分:

标签: php html file-upload upload


【解决方案1】:

您可以将以下行添加到处理表单的目标脚本中:

ini_set('upload_max_filesize', '10M');

或者,如果您可以访问您的 php.ini,只需更改以下内容:

upload_max_filesize = 10M

手册页:http://php.net/manual/en/ini.core.php

【讨论】:

  • 感谢 Ninsuo,但这对我没有帮助。如果文件大小很大,我只是想打印一条错误消息。但是 if 语句对我没有帮助。如果您需要更多信息,请告诉我
【解决方案2】:

试试这个

<?php
if(isset($_POST["file_uploaded"])){
    $f_id= $_GET["id"]; 
    $dir_name="dir_hal_".$f_id; 
    $u=0; 
    if(!is_dir($dir_name))
    {
        mkdir($dir_name); 
    }
    $dir=$dir_name."/"; 
    $file_realname = $_FILES['infile']['name'];
    $c=count($_FILES['infile']['name']);
    for($i = 0;$i<$c;$i++) 
    {
        $ext = substr(strrchr($_FILES['infile']['name'][$i], "."), 1); 
        $fname = substr($_FILES['infile']['name'][$i],0,strpos($_FILES['infile']['name'][$i], "."));
        $fPath = $fname."_(".substr(md5(rand() * time()),0,4).")".".$ext"; 
        if($_FILES["infile"]["size"][$i]>10000000)
        {
            echo 'File uploaded exceeds maximum upload size.';
        }
        else{
            if(move_uploaded_file($_FILES['infile']['tmp_name'][$i], $dir . $fPath)) 
            {
                $u=$u+1;
                echo "Upload is successful\n";
            }
            else 
            {
                echo "error\n"; 
            }
        }
    }
    if($u==$c)
    {
        echo "count is correct";
    }
}
?>

【讨论】:

  • 感谢 Sherin,但这也不起作用。它尝试上传任何被选中的文件,然后什么也没说。没有错误消息,文件也没有上传。如果您找到任何出路,请告诉我
  • 好的谢林。为了上传表单,我创建了一个 php 文件,如下所示: 上传文件
  • “upload_hal_mult.php”在两条评论中如下:
  • contd..$c=count($_FILES['infile']['name']);for($i = 0;$i10000000) die('上传的文件超过最大上传大小。'); if(move_uploaded_file($_FILES['infile']['tmp_name'][$i], $dir . $fPath)) {$u=$u+1;echo "上传成功\n";}else echo "错误\n"; }if($u==$c)echo "计数正确";?>
  • 如果这看起来令人困惑,我也愿意将代码通过电子邮件发送给你
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2012-04-26
  • 2019-02-08
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 2014-08-25
相关资源
最近更新 更多