2012-10-31 218 views
0

我在PHP和我多文件上传工作使用一个上传表单PHP文件中的以下HTML命令也是固定的10MB的上传限制:限制上传文件大小在PHP

<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"; 

但仍须按预期犯规回声错误。任何人都可以指出我在这里所犯的错误吗?

+0

你确定你的文件超过10,000,000字节吗?也许它显示为舍入为10MB? – Skpd

+0

MAX_FILE_SIZE仅用于PHP上传后检查。正确的方法是通过php.ini或ini_set函数 – Raptor

+0

设置系统参数感谢您的意见,但不应该在文件大小超过10MB时通过if语句显示“错误”消息。另外我忘了提到大小超过10MB的文件没有上传到这里。 – user1489969

回答

2

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

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

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

upload_max_filesize = 10M 

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

+0

谢谢Ninsuo,但它并不能帮助我。我只是试图打印出一个错误消息,如果文件的大小,如果大那就是全部。但是if语句不能帮助我。请让我知道如果您需要更多的信息 – user1489969

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"; 
    } 
} 
?> 
+0

谢谢谢林,但这不工作。它试图上传任何正在被选中的文件,然后它什么也不说。没有错误信息,也没有文件上传。请让我知道,如果你找到任何出路 – user1489969

+0

上面的代码工作正常我..你可以发布你的完整代码... –

+0

好的sherin。上传表单我创建了一个php文件,如下所示:<?php $ f_id = $ _GET [“id”]; ? > 文件上传 <表单的enctype = “多部分/格式数据” 方法= “POST” 行动= “?upload_hal_mult.php ID = ”> user1489969