2011-12-05 68 views
0

我的問題是,如何和將<input type='file' name='file[]'>多個工作在PHP?多個上傳字段PHP

謝謝

+0

可能重複http://stackoverflow.com/questions/2704314:

然後,您可以通過循環到$ _FILES超級全局一樣,讓所有的文件/ multiple-file-upload-in-php) – mario

回答

4

如果你通過他們循環作爲一個數組,它會工作一樣的:

foreach($_FILES['file'] AS $key=>$file) { 
    $filename = $file['tmp_name']; 
    $size = $file['size']; 
    $newfile = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . date("Ymd_his") . "_" . $filename; 
    move_uploaded_file($filename, $newfile); 
} 

它將循環遍歷每個上傳和處理。 只要確保你有每個(我添加了時間戳)之間的變化 - 否則你最終只會得到一個文件。

您與投入是正確的

<input type="file" name="file[]" /> 

你可以有很多的,你的希望

+0

我對move_uploaded_file($ filename,$ newfile)有疑問。如果我有新文件路徑abc/bcd/image.jpg並且沒有文件夾bd它會創建它嗎? – Raimonds

+0

不,你必須使用'is_dir($ _ SERVER ['DOCUMENT_ROOT']。「/ abc/bcd」)''來檢查php,如果它不存在,使用'mkdir($ _ SERVER ['DOCUMENT_ROOT ']。「/ abc/bcd」)' –

1

是的,他們會工作。 $_FILES將是PHP中上傳文件的數組。

1

是的,這當然會起作用。只要看看$_FILES超全球陣列。您所有上傳的文件及其元數據將存儲在那裏。

0

據我所知,如果你想從一個html表單上執行多個文件上傳,你需要有多個文件輸入框。

<input type='file' name='file1'> 
<input type='file' name='file2'> 
<input type='file' name='file3'> 

除非你有一些類型的java,javascript,flex或類似的多文件上傳框架來爲你做這項工作。

一旦你把它上傳,PHP腳本會是什麼樣子:

<? 
    foreach($_FILES as $file){ 
    move_uploaded_file($file[tmp_name],$target.$file[name]); 
    } 
?> 
0

按照W3C's HTML5 draft,您應該添加多個屬性:

<input type="file" name="file[]" multiple="multiple"> 

某些瀏覽器(如Internet Explorer(甚至9))不支持多個屬性,但主要的其他瀏覽器不支持。

<?php 

foreach ($_FILES['file']['error'] as $k => $error) { 
    if (!$error) { 
     move_uploaded_file($_FILES['file']['tmp_name'][$k], $your_dir.'/'.$_FILES['file']['name'][$k]); 
    } 
} 
?> 
[在PHP多文件上傳(的