0

我正在使用 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";

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

4

2 回答 2

2

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

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

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

upload_max_filesize = 10M

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

于 2012-10-31T06:07:28.600 回答
0

尝试这个

<?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";
    }
}
?>
于 2012-10-31T06:42:08.393 回答