国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端js下載zip文件異常問題解決

這篇具有很好參考價(jià)值的文章主要介紹了前端js下載zip文件異常問題解決。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一,本文解決問題如下

二,原下載代碼

1,ajax get 下載文件

2,下載異常圖:

三,成功下載的

1,?JQuery?實(shí)現(xiàn)文件下載xhr

2,圖例


引言:

本人使用的ajax 下載,由于下載CSV,文本之類的沒有問題,下載zip是出現(xiàn)各種問題。發(fā)現(xiàn)是設(shè)置responseType:"blob"沒生效,項(xiàng)目中又沒有maskjs,無法在提交請求之前重新responseType定義。再就是在整個(gè)jquery代碼中找到實(shí)現(xiàn)真是太費(fèi)眼睛了,后續(xù)用xhr實(shí)現(xiàn)擺脫了ajax只能下載文本的問題,這個(gè)也是處理問題的關(guān)鍵。

一,本文解決問題如下

1,mock模塊會(huì)影響原生的ajax請求,使得服務(wù)器返回的blob類型變成亂碼
2,壓縮文件出現(xiàn)不可預(yù)料的壓縮文件末端
3,后端生成Zip文件通過瀏覽器下載后文件損壞,無法打開

posman已經(jīng)測試了,能正常下載,不是后端的問題

二,原下載代碼

1,ajax get 下載文件

? ?$.ajax(
?? ??? ? ?{type='get',
?? ??? ? ?url:url,
?? ??? ? ?timeout=30000,
?? ??? ? ?msg:param,
?? ??? ? ?responseType:"blob"http://沒生效
?? ??? ? ?},
?? ??? ? ?
?? ??? ? ?succes:function(response,status,xhr){
?? ??? ? ? ? ? ?let fileName = xhr.getResponseHeader("content-disposition").split(';')[1].split('=')[1].replace(/\"/g,'')
? ? ? ? ? ? ? ? let type = ?xhr.getResponseHeader("content-type")
? ? ? ? ? ? ? ? let blob = new Blob([data],{type:type})?;設(shè)置類型并未生效

?? ??? ??? ??? ?var link = document.createElement('a');
?? ??? ??? ??? ?link.download = fileName;
?? ??? ??? ??? ?link.style.display = 'none';
?? ??? ??? ??? ?link.href = URL.createObjectURL(blob);
?? ??? ??? ??? ?document.body.appendChild(link);
?? ??? ??? ??? ?link.click();
?? ??? ??? ??? ?URL.revokeObjectURL(link.href);
?? ??? ??? ??? ?document.body.removeChild(link);

?? ??? ? ?},
?? ??? ? ?
?? ??? ? ?error:function(date){
?? ??? ? ? ? ? console.log("下載失敗")
?? ??? ? ?}
?? ? ?
?? ? ?)
?? ? ?

2,下載異常圖:

文件損壞

前端js下載zip文件異常問題解決,前端,blob,zip

壓縮文件出現(xiàn)不可預(yù)料的壓縮文件末端

前端js下載zip文件異常問題解決,前端,blob,zip
? ? ? ?

三,成功下載的

1,?JQuery?實(shí)現(xiàn)文件下載xhr

var xhr = new XMLHttpRequest();
? ? ? ? xhr.open('get', url, true); ? ?
? ? ? ? xhr.responseType = "blob"; ?// 返回類型blob
? ? ? ? xhr.setRequestHeader("Content-type", "application/json;charset=utf-8");?
?? ??? ? xhr.setRequestHeader("msg", "param");
? ? ? ? xhr.onload = function () {
? ? ? ? ? ? if (this.status === 200) {
? ? ? ? ? ? ? ? var blob = this.response;
? ? ? ? ? ? ? ? var reader = new FileReader();
? ? ? ? ? ? ? ? reader.readAsDataURL(blob); ?// 轉(zhuǎn)換為base64,可以直接放入a標(biāo)簽href
? ? ? ? ? ? ? ? reader.onload = function (e) {
? ? ? ? ? ? ? ? ? ? // 轉(zhuǎn)換完成,創(chuàng)建一個(gè)a標(biāo)簽用于下載
? ? ? ? ? ? ? ? ? ? var a = document.createElement('a');
?? ??? ??? ??? ? ? ?var fileName = xhr.getResponseHeader("content-disposition").split(';')[1].split('=')[1].replace(/\"/g,'')
? ? ? ? ? ? ? ? ? ? a.download = fileName;
? ? ? ? ? ? ? ? ? ? a.href = e.target.result;
? ? ? ? ? ? ? ? ? ? $("body").append(a); ?// 修復(fù)firefox中無法觸發(fā)click
? ? ? ? ? ? ? ? ? ? a.click();
? ? ? ? ? ? ? ? ? ? $(a).remove();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }else{
?? ??? ??? ? ? console.log("下載失敗")
?? ??? ??? ?}
? ? ? ? };
? ? ? ? // 發(fā)送ajax請求
? ? ? ? xhr.send(null)

2,圖例

前端js下載zip文件異常問題解決,前端,blob,zip文章來源地址http://www.zghlxwxcb.cn/news/detail-701418.html

到了這里,關(guān)于前端js下載zip文件異常問題解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包