javascript - JS 文件上傳問題
問題描述
問題:1、圖片可以轉(zhuǎn)成base64上傳,為什么Excel,pdf等不能轉(zhuǎn)base64?2、通過XMLHttpRequest上傳文件,文件放入FormData中,但怎么給文件綁定標(biāo)記,比如說,怎么知道這個文件是我當(dāng)前用戶的?3、大家有沒有好的js文件上傳解決方案?
問題解答
回答1:在現(xiàn)代瀏覽器下,可使用 html5 相關(guān)API實(shí)現(xiàn)。我暫時想到這幾個 Blob FileReader btoa 具體的就需要你去查文檔了
FormData可以用append添加額外的字段。 這里你需要放開思路,一個字段最終代表著傳遞到后臺的一個參數(shù),這個參數(shù)其實(shí)是很抽象的一個概念,具體取決與你前臺跟后臺的約定。 舉個例子,我可以在最后要發(fā)送請求的時候構(gòu)造一個額外對象(它的字段取值要跟后臺商量),添加到FormData中,發(fā)送到服務(wù)端。
var meta = { name:'', time:'', data:[]} formData.append('meta', JSON.stringify(meta));
服務(wù)端最后再將這個字段反序列化成對象,取得里面的值。
最后,js文件上傳是HTML5后提供的功能所以有兼容性的問題,說白了也就是那幾個新增API的使用,去 MDN上把相關(guān)文檔、demo 看一下就差不多了
回答2:1.pdf應(yīng)該是可以轉(zhuǎn)base64的,excel沒測試過,但excel可以轉(zhuǎn)為Blob類型,理論上也應(yīng)該可以轉(zhuǎn)為base6。
2.FormData再加一個參數(shù)作為文件的唯一標(biāo)記,一起傳到后端就行了。
回答3:第1點(diǎn)我不太清楚,第2點(diǎn)需要通過session,靠服務(wù)端
回答4:第二點(diǎn)可以多給formdata增加一個input字段
相關(guān)文章:
1. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””2. boot2docker無法啟動3. docker-compose中volumes的問題4. nignx - docker內(nèi)nginx 80端口被占用5. java - SSH框架中寫分頁時service層中不能注入分頁類6. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.7. dockerfile - 為什么docker容器啟動不了?8. docker容器呢SSH為什么連不通呢?9. 關(guān)于docker下的nginx壓力測試10. docker images顯示的鏡像過多,狗眼被亮瞎了,怎么辦?

網(wǎng)公網(wǎng)安備