2015-10-24 106 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