7

動作してアップロードする次のコードがありますが、配列を循環してすべてのファイルをアップロードするのではなく、最初のファイルだけをアップロードします。

<form method="post" enctype="multipart/form-data" action="http://<?php echo $pageURL;?>">   
<input class="new" multiple="multiple" name="documents[]" type="file" />
<input class="new" multiple="multiple" name="documents[]" type="file" />
<input type="submit" class="button" name="addMaterials" value="Add" />

<?php

    foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name)
        {
            $file_name = $key.$_FILES['documents']['name'][$key];
            $file_size =$_FILES['documents']['size'][$key];
            $file_tmp =$_FILES['documents']['tmp_name'][$key];
            $file_type=$_FILES['documents']['type'][$key];  
            move_uploaded_file($file_tmp,"files/".time().$file_name);
        }
?>

documents[] ファイル配列を循環するために必要です。

print_r()ドキュメント配列の例:

Array ( 
    [name] => Array ( [0] => AcroRd32.exe ) 
    [type] => Array ( [0] => application/x-msdownload ) 
    [tmp_name] => Array ( [0] => C:\xampp\tmp\phpE8BD.tmp ) 
    [error] => Array ( [0] => 0 ) 
    [size] => Array ( [0] => 1343112 ) 
    )

どんな助けでも感謝します。

4

6 に答える 6

18

私の更新されたコードを使用できます。私のデモによると、複数のファイルのアップロードに最適です。

 <?php
if(isset($_FILES['documents'])){

foreach($_FILES['documents']['tmp_name'] as $key => $tmp_name)
{
    $file_name = $key.$_FILES['documents']['name'][$key];
    $file_size =$_FILES['documents']['size'][$key];
    $file_tmp =$_FILES['documents']['tmp_name'][$key];
    $file_type=$_FILES['documents']['type'][$key];  
    move_uploaded_file($file_tmp,"galleries/".time().$file_name);
}
}else{
echo "<form enctype='multipart/form-data' action='test1.php' method='POST'>";
 echo "File:<input name='documents[]' multiple='multiple' type='file'/><input type='submit' value='Upload'/>";

 echo "</form>";
}
?>
于 2013-04-11T06:17:48.627 に答える
1

複数ファイルをアップロードするには、このコードを試してください

<form method="post" action="upload-page.php" enctype="multipart/form-data">
 <input name="filesToUpload[]" id="filesToUpload" type="file" multiple="" />
</form>

PHPで

if(count($_FILES['uploads']['filesToUpload'])) {
foreach ($_FILES['uploads']['filesToUpload'] as $file) {

    //do your upload stuff here
    echo $file;

}
}

JavaScript を使用してファイル名を表示するには

//get the input and UL list
var input = document.getElementById('filesToUpload');
var list = document.getElementById('fileList');

//empty list for now...
while (list.hasChildNodes()) {
list.removeChild(ul.firstChild);
}

//for every file...
for (var x = 0; x < input.files.length; x++) {
//add to list
var li = document.createElement('li');
li.innerHTML = 'File ' + (x + 1) + ':  ' + input.files[x].name;
list.append(li);
}
于 2013-04-11T06:10:24.463 に答える
0

この方法でループしてみてくださいdocuments array()

<?php 

foreach($_FILES['documents']['tmp_name'] as $key => $tmpName) {

  $file_name = $_FILES['documents']['name'][$key];
  $file_type = $_FILES['documents']['type'][$key];
  $file_size = $_FILES['documents']['size'][$key];
  $file_tmp  = $_FILES['documents']['tmp_name'][$key];

  move_uploaded_file($file_tmp,"files/".time().$file_name);
}

?>
于 2013-04-11T06:04:48.250 に答える