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

失敗し、「サイズが 10 MB 未満のファイルのアップロード エラー」というメッセージが表示されることがあります。しかし、それは起こりませんでした。アップロードしようとしていて、期待どおりにエラー メッセージが表示されませんでした。

そのため、次のように 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 に答える