javascript - JS 文件上傳問(wèn)題
問(wèn)題描述
問(wèn)題:1、圖片可以轉(zhuǎn)成base64上傳,為什么Excel,pdf等不能轉(zhuǎn)base64?2、通過(guò)XMLHttpRequest上傳文件,文件放入FormData中,但怎么給文件綁定標(biāo)記,比如說(shuō),怎么知道這個(gè)文件是我當(dāng)前用戶的?3、大家有沒(méi)有好的js文件上傳解決方案?
問(wèn)題解答
回答1:在現(xiàn)代瀏覽器下,可使用 html5 相關(guān)API實(shí)現(xiàn)。我暫時(shí)想到這幾個(gè) Blob FileReader btoa 具體的就需要你去查文檔了
FormData可以用append添加額外的字段。 這里你需要放開(kāi)思路,一個(gè)字段最終代表著傳遞到后臺(tái)的一個(gè)參數(shù),這個(gè)參數(shù)其實(shí)是很抽象的一個(gè)概念,具體取決與你前臺(tái)跟后臺(tái)的約定。 舉個(gè)例子,我可以在最后要發(fā)送請(qǐng)求的時(shí)候構(gòu)造一個(gè)額外對(duì)象(它的字段取值要跟后臺(tái)商量),添加到FormData中,發(fā)送到服務(wù)端。
var meta = { name:'', time:'', data:[]} formData.append('meta', JSON.stringify(meta));
服務(wù)端最后再將這個(gè)字段反序列化成對(duì)象,取得里面的值。
最后,js文件上傳是HTML5后提供的功能所以有兼容性的問(wèn)題,說(shuō)白了也就是那幾個(gè)新增API的使用,去 MDN上把相關(guān)文檔、demo 看一下就差不多了
回答2:1.pdf應(yīng)該是可以轉(zhuǎn)base64的,excel沒(méi)測(cè)試過(guò),但excel可以轉(zhuǎn)為Blob類型,理論上也應(yīng)該可以轉(zhuǎn)為base6。
2.FormData再加一個(gè)參數(shù)作為文件的唯一標(biāo)記,一起傳到后端就行了。
回答3:第1點(diǎn)我不太清楚,第2點(diǎn)需要通過(guò)session,靠服務(wù)端
回答4:第二點(diǎn)可以多給formdata增加一個(gè)input字段
相關(guān)文章:
1. javascript - js 修改表格元素的,可以用DOM操作實(shí)現(xiàn)嗎?2. python中def定義的函數(shù)加括號(hào)和不加括號(hào)的區(qū)別?3. 用tp5框架寫(xiě)sql語(yǔ)句4. javascript - 請(qǐng)教移動(dòng)端從詳情頁(yè)返回到列表頁(yè)原來(lái)位置的問(wèn)題?5. python - xpath提取網(wǎng)頁(yè)路徑?jīng)]問(wèn)題,但是缺失內(nèi)容?6. javascript - js一個(gè)call和apply的問(wèn)題?7. 跪求解答關(guān)于emmetc插件生效的問(wèn)題8. javascript - js setTimeout在雙重for循環(huán)中如何使用?9. 點(diǎn)擊頁(yè)面就自動(dòng)輸入到mysql.求解10. javascript - 關(guān)于微信公眾號(hào)開(kāi)發(fā)的一個(gè)trouble!
