1

我使用Dropzone.js提交了一堆帶有其他表單元素的文件,在https://github.com/enyo/dropzone/wiki/Combine-normal-form-with-Dropzone上突出顯示,但是,在拖放多個不同文件時並提交表格,結果只有其中一個上傳。我也跟蹤上傳到我的數據庫中的文件,而且似乎取決於拖放到上傳區的文件數量,上傳單個文件的次數很多。例如:我將5個帶有diff文件名的diff圖像拖放到dropzone中,其中一個是'sunshine.jpg',結果'sunshine.jpg'被記錄在數據庫中5次。在進一步的探索中,我通過Chrome開發工具中的網絡面板發現,在請求頭中,只有一個文件被多次發送到數組中。經過一段時間的故障排除,沒有多大功效。任何見解,將不勝感激。Dropzone.js - 在多個文件上傳中只多次上傳一個文件

簡明的HTML:

<form action="" method="post" enctype="multipart/form-data" novalidate class="dropzone" id="mydropzone" name="create-form"> 
<div class="input-group" id="whatever"> 
    <div id="dropzonePreview"> 
     <div class="fallback"> 
      <input name="file" type="file" multiple /> 
     </div> 
    </div> 
</div> 
...Other form elements 
<input style="margin-bottom:15px;" id="btn_main_2" type="button" name="create" value='<?php echo $create_button; ?>' class="btn btn-large btn-success"> 
</form> 

的JavaScript:

Dropzone.options.mydropzone = { 
      url: 'Modules/global/module-fileuploads-dropzone.2.php', 
      addRemoveLinks: true, 
      autoProcessQueue: false, 
      autoDiscover: false, 
      paramName: 'file', 
      previewsContainer: '#dropzonePreview', 
      clickable: false, 
      uploadMultiple: true, 
      parallelUploads: 100, 
      maxFiles: 100, 
      accept: function(file, done) { 
      console.log("uploaded file"); 
      done(); 
      }, 
     error: function(file, msg){ 
      alert(msg); 
      }, 
      init: function() { 

       var myDropzone = this; 

      $("#btn_main_2").on('click',function(e) { 
       e.preventDefault(); 
       myDropzone.processQueue(); 

      }); 

      } 

     }; 

網絡日誌截圖:

Network Log - Request Header

+0

你可以顯示你的控制器端代碼嗎? – Jenish

+0

我以爲我已經提供了上述內容。你的意思是接收文件有效載荷並處理它們上傳的服務器端代碼?我認爲這與此無關,因爲問題出現在客戶端本身的某個地方,同樣的文件被多次附加到響應頭中的數組中,正如Chrome開發工具的網絡日誌所記錄的那樣。 –

+0

'myDropzone.on(「addedfile」,function(file){ console.log(file); });'檢查這個文件是否正常上傳 – Jenish

回答

0

在進一步的故障排除,我找到了解決這個問題是相當簡單:

paramName: 'file[]' 

代替

paramName: 'file' 

,因爲我們正在處理的文件,在這種情況下,一個數組。看起來像指定一個數組作爲參數不能忽略。

+0

你把這個放在哪裏? – Ryan