2015-09-06 62 views
4

對於使用drop zone.js進行上傳,包含非ascii字符的文件名在發送到服務器之前不會被編碼。他們只是留在原樣:非ascii文件名的編碼

------WebKitFormBoundaryvXgdeNXSwHZBUrFJ 
Content-Disposition: form-data; name="file[0]"; filename="täst.png" 

因此,在服務器端編碼是未知的。

有沒有辦法強制dropzone.js到UrlEncode的文件名,類似於RFC 6266?

Content-Disposition: form-data; name="file[0]"; filename*=utf-8''t%c3%a4st.png 

還有沒有其他解決方案?

回答

3

我遇到了同樣的問題,我最終做的解決這個問題是傳遞一個額外的參數。

$("#myDz").dropzone({ 
    init: function() { 
     this.on("sending", function(file, xhr, formData) { 
      var fn = encodeURI(file.name) 
      formData.append("encFilename", fn); 
     }); 
    } 
}); 

這將附加參數encFilename發送到,然後可以使用時,它的寫入磁盤來命名該文件的後端。 file.name不能在那一點更新,但這樣做的工作就好了。

0

IamNaN的解決方案工作正常。只需要在Java WS中解碼:

filename = java.net.URLDecoder.decode(filename, "UTF-8");