2014-02-25 141 views
22

我使用dropzone.js作爲我的拖放文件上傳解決方案。我只想上傳一個文件,如果我上傳第二個文件,第一個文件應該刪除,第二個文件應該上傳。 任何想法如何做到這一點..dropzone只上傳一個文件

這裏是我的html

<form class="dropzone dz-clickable" action="upload.php" enctype='multipart/form-data'> 
    <i class="fa fa-cloud-upload element"></i> 
    <div style="color:gray;">Drag and drop or click to upload image</div> 
    <input type="hidden" name="filenameEmail" class="filenameEmail" value=""> 
    <input type="hidden" name="side" value="front"> 
</form> 

我改變dropzone.js

maxFiles: 1 

它允許上傳只有一個文件,但我不能刪除以前上傳file.please幫助我out.thanks提前

回答

56

maxFiles:1是用來告訴dropzone,應該有b e只有一個文件。當超過1個文件時,將調用功能maxfilesexceeded,並將超出的文件作爲第一個參數。

這裏是一個簡單的函數來刪除第一個文件的預覽,並添加新的:)

maxFiles:1, 
init: function() { 
     this.on("maxfilesexceeded", function(file) { 
      this.removeAllFiles(); 
      this.addFile(file); 
     }); 
} 
+0

當我拖放,第一個之後,文件的圖像預覽消失,這是一個灰色的預覽。 – Rachel

+0

這個答案應該標記爲接受 –

+2

這並不完美,因爲它觸發了'error'事件。跟蹤錯誤時很糟糕。 @ darkbaby123適用於最新版本。 – gentleboy

11

限制maxFiles 1仍然允許在上傳對話框中選擇多個文件。要禁止選擇多個圖像在配置中指定下列init函數:

maxFiles:1, 
init: function() { 
    this.hiddenFileInput.removeAttribute('multiple'); 
} 
+1

我試過這個,但它對我不起作用。我只有一個輸入,我是否需要添加另一個(隱藏)輸入? –

+0

@AndrewFox你知道了嗎?它也不適用於我。 –

+0

@MilanoSlesarik不幸的是,我仍然有這個問題。 –

11

我使用事件maxfilesexceeded與方法addFile和失敗者到事件呼叫的無限循環。這應該是使用addFile的問題,因爲我沒有在官方網站或GitHub wiki中看到它。最後我解決了addedfile事件。 Dropzone.js是我寫的最新版本(4.3.0)。

init: function() { 
    this.on('addedfile', function(file) { 
    if (this.files.length > 1) { 
     this.removeFile(this.files[0]); 
    } 
    }); 
} 
+0

謝謝你!答案@NeoNe也很好,但是當你拖動一個文件時,它仍然會上傳兩個文件。我試過你的,這兩種方式:) –

+0

謝謝。這是工作魅力。 – mzonerz

+1

這一個爲我工作。@NeoNe激發錯誤事件。跟蹤錯誤時很糟糕。 – gentleboy

-1

這些解決方案都不適用於我。

maxfilesexceeded事件被調用得太晚,即嘗試添加文件之後。

使用this.removeFile(this.files[0]);的其他解決方案導致"Uncaught TypeError: Cannot read property 'removeChild' of null".或無限循環。

通過解決 - 使用dz-clickable(文件選擇BTN)和拖放時

maxFiles: 2, 
init: function() { 

    this.on("addedfile", function (file) { 
     if (this.files.length > 1) { 
      this.files = this.files.slice(1, 2);       
     } 
    }); 

} 

作品。

+0

要小心,因爲'maxFiles:2'允許多項選擇。這是一種糟糕的用戶體驗,並會導致手機誤導。請參閱@ darkbaby123答案 – gentleboy

相關問題