我有一個表單生成器,我想添加拖放文件功能。發送拖放文件到輸入類型文件元素
我被卡住的地方在於所有我遇到的資源在丟失時通過xhr
上傳圖片。我希望圖像一直存在,直到表單被提交。
理想情況下,event.dataTransfer.files[0]
對象將被轉移到<input type="file" ...value="[dropped-file]">
元素。
目前我無法做到這一點。他們使用兼容的數據類型嗎?
我有一個表單生成器,我想添加拖放文件功能。發送拖放文件到輸入類型文件元素
我被卡住的地方在於所有我遇到的資源在丟失時通過xhr
上傳圖片。我希望圖像一直存在,直到表單被提交。
理想情況下,event.dataTransfer.files[0]
對象將被轉移到<input type="file" ...value="[dropped-file]">
元素。
目前我無法做到這一點。他們使用兼容的數據類型嗎?
您可以在發生拖放事件後創建併發送表單,然後用戶單擊conf按鈕。下面是它的要點:(未測試)。
function uploadFile(file) {
var form = new FormData(),
xhr = new XMLHttpRequest();
form.append('media', file);
xhr.open('POST', '/myurl/');
xhr.onprogress = function(e) {
showProgress();
}
xhr.onload = function(e) {
showSuccessConf();
}
xhr.send(form);
}
uploadFile(event.dataTransfer.files[0]);
爲什麼使用XHR會出現問題?只需在提交表格後發送請求,或者通過ajax提交整個表格和/或文件。請閱讀[FormData](https://developer.mozilla.org/en-US/docs/Web/API/FormData)瞭解更多信息。 –
我的理解是,FormData不適用於較老的(8-9)IE。我錯了嗎? – emachine
這是真的(FormData在這些瀏覽器中不存在),但無關緊要,因爲無論如何您都無法通過拖放在這些瀏覽器中上傳文件。 –