0

複数の画像ファイルをアップロードしようとしています。画像名が「icon.jpg」の場合、他の画像とは別の場所に移動されます。これは正常に機能しているように見えますが、最初の画像のみがアップロードされて移動されます。

スクリプトは最初の画像の後で停止し、少なくとも 4 つまたは 5 つの他の画像をアップロードしようとしても、「クエリが空でした」と表示されます。

$id = '01';
foreach($_FILES['file']['name'] as $n => $image) 
if(!empty($image)) {
{
 if ($image == 'icon.jpg'){
  $target_path = "../images/articles/".$id."_small.jpg";
  } else {
  $target_path = "../images/galleries/".$id."/pk_hb" . $id.".jpg";
  }
  move_uploaded_file($_FILES['file']['tmp_name'][$n], $target_path);
$id++;
 }
}

これが問題である場合に備えて、使用している動的 JS アップロード フォームを含めました。

<form action="<? echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data" method="post" name="add">
Image 1: <input name='file[]' type='file' accept="image/*" />
<div id='file_tools'>
    <img src='../images/top/file_add.png' id='add_file' title='Add new input'/>
    <img src='../images/top/file_del.png' id='del_file' title='Delete'/>
</div>

<script type='text/javascript'>
$(document).ready(function(){
var counter = 2;
$('#del_file').hide();
$('img#add_file').click(function(){
    $('#file_tools').before('Image '+counter+': <input name="file[]" type="file" accept="image/*" />');
    $('#del_file').fadeIn(0);
counter++;
});
$('img#del_file').click(function(){
    if(counter==3){
        $('#del_file').hide();
    }   
    counter--;
    $('#f'+counter).remove();
});
});
</script>
    <input class="submit" type="submit" name="add" value="Submit" />
</form>

var_dump($_FILES) の内容を追加

array(1) { 
["file"]=> array(5) 
{ 
 ["name"]=> array(1) { [0]=> string(11) "cooley1.jpg" } 
 ["type"]=> array(1) { [0]=> string(10) "image/jpeg" } 
 ["tmp_name"]=> array(1) { [0]=> string(18) "/var/tmp/phpLYaj7U" } 
 ["error"]=> array(1) { [0]=> int(0) } 
 ["size"]=> array(1) { [0]=> int(106241) } 
} 
} 
4

1 に答える 1

1

更新しました

とは異なり、すべてのを に設定して、$_POSTファイルの配列を に送信することはできません。には、アップロードしたすべてのファイルが配列に自動的に含まれます :) キーはfile要素のです。$_FILESnameinputfile[]$_FILESnameinput

アップロードするファイルが複数あることをスクリプトに理解させるには、各ファイルの名前inputfile_1, file_2, ...に変更する必要があります。file_n

また、有効な値http://php.net/manual/en/ini.core.php#ini.max-file-uploadsがあることを確認するmax-file-uploads必要があります。php.ini

于 2013-01-18T15:52:35.787 に答える