限制在php中上传文件大小

时间:2012-10-31 06:04:55

标签: php html file-upload upload

我正在处理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";

但它仍然没有像预期的那样回应错误。任何人都可以指出我在这里做的错误吗?

2 个答案:

答案 0 :(得分:2)

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

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

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

upload_max_filesize = 10M

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

答案 1 :(得分: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";
    }
}
?>