2012-10-31 140 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