2009-06-23 12 views
0

ここに私が使用しているコードがあります。問題がどこにあるのかわからない - 複数のファイルを外に出すことを意図している。面白いのは、ファイルが1つだけアップロードされてから何もアップロードされないということです。複数のファイルをアップロードする際の問題

誰かが私がそれにしてください見て助けることができます。..すべての

<pre><code> 
<?php 

/*** the upload directory ***/ 
$upload_dir= './uploads'; 

/*** numver of files to upload ***/ 
$num_uploads = 5; 

/*** maximum filesize allowed in bytes ***/ 
$max_file_size = 999999951200; 

/*** the maximum filesize from php.ini ***/ 
$ini_max = str_replace('M', '', ini_get('upload_max_filesize')); 
$upload_max = $ini_max * 99999991024; 

/*** a message for users ***/ 
$msg = 'Please select files for uploading'; 

/*** an array to hold messages ***/ 
$messages = array(); 

/*** check if a file has been submitted ***/ 
if(isset($_FILES['userfile']['tmp_name'])) 
{ 
    /** loop through the array of files ***/ 
    for($i=0; $i < count($_FILES['userfile']['tmp_name']);$i++) 
    { 
     // check if there is a file in the array 
     if(!is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) 
     { 
      $messages[] = 'No file uploaded'; 
     } 
     /*** check if the file is less then the max php.ini size ***/ 
     elseif($_FILES['userfile']['size'][$i] > $upload_max) 
     { 
      $messages[] = "File size exceeds $upload_max php.ini limit"; 
     } 
     // check the file is less than the maximum file size 
     elseif($_FILES['userfile']['size'][$i] > $max_file_size) 
     { 
      $messages[] = "File size exceeds $max_file_size limit"; 
     } 
     else 
     { 
      // copy the file to the specified dir 
      if(@copy($_FILES['userfile']['tmp_name'][$i],$upload_dir.'/'.$_FILES['userfile']['name'][$i])) 
      { 
       /*** give praise and thanks to the php gods ***/ 
       $messages[] = $_FILES['userfile']['name'][$i].' uploaded'; 
      } 
      else 
      { 
       /*** an error message ***/ 
       $messages[] = 'Uploading '.$_FILES['userfile']['name'][$i].' Failed'; 
      } 
     } 
    } 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title>Multiple File Upload</title> 
</head> 

<body> 

<h3><?php echo $msg; ?></h3> 

<p> 
<?php 
if(sizeof($messages) != 0) 
{ 
    foreach($messages as $err) 
    { 
     echo $err.'<br />'; 
    } 
} 
?> 
</p> 

<form enctype="multipart/form-data" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"> 
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $upload_max; ?>" /> 
<?php 
$num = 0; 
while($num < $num_uploads) 
{ 
    echo '<div><input name="userfile[]" type="file" /></div>'; 
    $num++; 
} 
?> 
<input type="submit" value="Upload" /> 
</form> 

</body> 
</html> 

</code></pre> 
+0

あなたは入力[ファイル]フィールドを配列として扱いますか?例えば。 – anddoutoi

+0

はい、私は配列として扱いますが、私はこのサイトで正しく表示されているかどうかわかりません:(私はコードを再フォーマットしようとします... –

+0

ああ、それは私にPを与えたコードのフォーマットでした – anddoutoi

答えて

1

最初にファイルを移動するためにコピーを()を使用しないでください。これにはmove_uploaded_file()という関数があります。この関数は、ファイルが実際にアップロードされたかどうかをチェックし、移動されないファイルの移動を防ぎます。

第2位。アップロード時にエラーが発生する可能性があるため、アップロードされた各ファイルのエラー値を確認してください。

更新。

ソリューションを裸の骨に切断してみてください。エラー報告は、動作させるまでスキップしてください。これは、コードの正確な肉とジャガイモが何であるかを知るのに役立ち、起こり得るエラーを回避する前に、その部分がうまく機能するように助けます。

2番目の更新。

コードの最小化バージョンです。わたしにはできる。

http://cznp.com/1032712.phps

私は何もしなければならなかったことは、私は私のウェブサーバ用に書き込み可能行う書いていたフォルダを作るです。

+0

オラフールさん、エラーは報告されていません。本当に私には腹が立っています。(コードが実行されずにエラーが発生しない場合は嫌いです。) –

+0

Aweeeeeeeesome stuff :) :)あなたは人生の節約者です。私のコードで何が間違っていたのですか? –

+0

move_uploaded_fileを使用していなかったのは私の推測です。残りはほとんど同じでした。 –

関連する問題