我在嘗試將HTML5拖放文件上傳功能集成到我的項目KCFinder中。該代碼由forum中的某個人編寫。它工作正常。唯一的問題,如果你試圖上傳文件到名稱目錄包含特殊的Unicode字符(西里爾等...)。 目錄路徑,文件應該上傳到,通過$ _GET ['dir']傳輸。 如果我使用的上傳按鈕,而不是拖放上傳的作品和我(使用Firebug)看到使用Ajax發佈unicode字符
Content-Disposition: form-data; name="dir"
files/ÑеÑÑ
在POST數據。真實的目錄路徑是files/тест
。 如果我將它從我的電腦文件拖放到同一目錄下,我得到了一個錯誤
String contains an invalid character" code: "5
xhr.sendAsBinary(postbody);
拖放工作沒有錯誤,如果我試圖上傳到該目錄名,只有非Unicode字符。我嘗試使用encodeURIComponent()對'dir'參數進行編碼,但在這種情況下,錯誤消失了,但響應的PHP得到了編碼(「files /%D1%82%D0%B5%D1%81%D1%82」 )
postbody += 'Content-Type: ' + evt.target.thisFileType + '\r\n\r\n' +
evt.target.result + '\r\n--' + boundary +
'\r\nContent-Disposition: form-data; name="dir"\r\n\r\n' +
encodeURIComponent(evt.target.thisTargetDir) + '\r\n--' + boundary + '\r\n--' +
boundary + '--\r\n';
該項目有Git。我無法發佈更多超鏈接。您可以在SourceForge項目中找到它。
如果你需要一個Javascript UTF-8編碼例程,你可以找到一個作爲MD5哈希算法的JS實現的一部分[在webtoolkit.info上](http://www.webtoolkit.info/javascript-md5的.html)。 – DaveRandom
@DaveRandom:謝謝!我快速瀏覽瞭如何創建UTF8,但我看不到內置的解決方案。好東西。 –
@DaveRandom:是的!這解決了我的問題! 10Q! –