2012-07-19 72 views
0

我正在尝试构建一个简单的HTML5多文件上传器。HTML 5/PHP多文件上传字段

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

我想修改代码,我想出了下面因此它适用于listingimages [],而不是$ _FILES。我已经尝试了几种不同的变体,但似乎无法让它获取listingimages []中的文件。我的下面的脚本对每个单独的上传字段都正常工作,但我也需要它为每个单独的上传数组工作。

$files = $_FILES; 

foreach ($files as $field_name => $val) 
{ 
     $target_path = "../../uploads/listing/files/"; 
     $target_path = $target_path . basename($files[$field_name]['name']); 
     move_uploaded_file($files[$field_name]['tmp_name'], $target_path); 
     $_POST[$field_name] = $files[$field_name]['name']; 
} 

我想要做的是修改上述只为listingimages []而不是所有$ _FILES。

+0

你为什么要指定的文件的名称一个职位参数?一般来说,你不应该修改超全球。 – 2012-07-19 05:21:08

+0

我这样做是因为这只是一个个人脚本,而且即时通讯只是在上传文件时将邮件数组快速通过电子邮件发送给自己。 – shwebdev 2012-07-19 05:29:16

回答

0

你应该能够只是修改的foreach:

foreach($_FILES['listingimages'] as $field_name => $val) { 
+0

嗨,感谢您的帮助,但我给了一个尝试,它并没有为我工作,仍然没有上传。 – shwebdev 2012-07-19 05:34:14

+0

var_dump($ _ FILES)的输出是什么;'? – 2012-07-19 05:35:11

+0

array(2){[“listing_hero_image”] => array(5){[“name”] => string(0)“”[“type”] => string(0)“”[“tmp_name”] = > string(0)“”[“error”] => int(4)[“size”] => int(0)} [“listingimages”] => array(5){[“name”] => array (2){[0] => string(12)“IMG_0237.JPG”[1] => string(12)“IMG_0224.JPG”} [“type”] => array(2){[0] => string(10)“image/jpeg”[1] => string(10)“image/jpeg”} [“tmp_name”] => array(2){[0] => string(45)“/ Applications/XAMPP/xamppfiles/temp/php2DWwvq“[1] => string(45)”/ Applications/XAMPP/xamppfiles/temp/php2EhBIa“} [”error“] => array(2){[0] => int(0) – shwebdev 2012-07-19 05:45:19

0

我经过一番深入研究想出答案:

for ($i = 0; $i < count($_FILES['listingimages']['name']); $i++) { 
    $target_path = "../../uploads/listing/files/"; 
    $target_path = $target_path . basename($_FILES['listingimages']['name'][$i]); 
    move_uploaded_file($_FILES['listingimages']['tmp_name'][$i], $target_path); 
}