2015-10-24 35 views
1

我正在使用文件上传输入与multiple属性。我的$ _FILES的输出如下:多文件上传识别

[kadFile] => Array 
     (
      [name] => Array 
       (
        [0] => Txt1.txt 
        [1] => Doc1.docx 
       ) 

      [type] => Array 
       (
        [0] => text/plain 
        [1] => application/vnd.openxmlformats-officedocument.wordprocessingml.document 
       ) 

      [tmp_name] => Array 
       (
        [0] => C:\wamp\tmp\phpE515.tmp 
        [1] => C:\wamp\tmp\phpE525.tmp 
       ) 

      [error] => Array 
       (
        [0] => 0 
        [1] => 0 
       ) 

      [size] => Array 
       (
        [0] => 824 
        [1] => 768066 
       ) 

     ) 

有没有办法给他们一个特定的名字,通过JavaScript的假设或其他任何方式,使他们将POST-ED如下识别这些文件:

[kadFile] => Array 
      (
       [name] => Array 
        (
         ["kadFile_txt1"] => Txt1.txt 
         ["kadFile_doc1"] => Doc1.docx 
        ) ... 

我需要通过创建动态输入字段来传递特定属性以每个文件当选择这些文件,这些字段有一个命名约定,(文件输入名称+所选文件名+特定字段标识符)。在服务器级别,我需要保存每个文件并添加这些额外的属性一次。

回答

1

只要您保留设置,您就可以创建关联数组。然后在地方$_FILES阵列的治疗$new,这样的事情:

foreach($_FILES['kadFile']['name'] as $key => $value) { 
     // This is not the greatest of regex, but works for your example 
     preg_match('/([^\.]+).([0-9a-zA-Z]{3})/',$value,$exp); 
     $nKey = $exp[1]; 
     $new['kadFile']['name']["kadFile_".$nKey]  = $value; 
     $new['kadFile']['tmp_name']["kadFile_".$nKey] = $_FILES['kadFile']['tmp_name'][$key]; 
     $new['kadFile']['error']["kadFile_".$nKey]  = $_FILES['kadFile']['error'][$key]; 
     $new['kadFile']['size']["kadFile_".$nKey]  = $_FILES['kadFile']['size'][$key]; 

    } 

echo print_r($new); 
+0

似乎够合理,有一些操作我可以达到我想要的。我敢打赌这是唯一的方法。谢谢 – KAD

+0

是的,我一直都在这样做,但我会像@Abijeet Patro的链接那样进行分组。它更具可读性。 – Rasclatt

1

AFAIK,您无法通过JavaScript更改上传的文件名。你有没有想过使用单独的文件控制?

或者关于JavaScript,我想你可以在改变事件的文件控件上添加隐藏字段。

我会创建名称为hdn_"fileName"的隐藏字段以及您想要保留的值。

然后,当您开始循环遍历$_FILES中的文件时,您可以从$_POST访问这些隐藏的字段值(基于当前文件名),并执行任何您想要的操作。

+0

嗯,我能做到这一点当前与文件的索引,如'kadFile_0_myField',这是很好的,但如果我能我想知道在'$ _FILES'数组中操纵键变为关联而不是数字 – KAD

+0

我不确定你可以 - http://php.net/manual/en/features.file-upload.post-method.php# 91479 –

+0

感谢兄弟的帮助 – KAD