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

vue 后端返回二進(jìn)制流-前端通過blob對象下載文件-圖片

這篇具有很好參考價(jià)值的文章主要介紹了vue 后端返回二進(jìn)制流-前端通過blob對象下載文件-圖片。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

  • 在實(shí)際開發(fā)中我們經(jīng)常會(huì)遇見下載文件的場景,比如下載合同,下載文件

  • 下載文件有2種方式,一種是后端返回二進(jìn)制流,前端通過blob對象接受根據(jù)不同類型下載

  • 還有一種把地址直接在瀏覽器新窗口打開瀏覽器打開pdf可以預(yù)覽和下載,其他文件直接下載

  • 但不管是那種方式,原理都是一樣的只是取決于誰來執(zhí)行轉(zhuǎn)化代碼

代碼實(shí)現(xiàn)

1.封裝api-根據(jù)直接后端接口而定(注意要在請求時(shí)標(biāo)明是二進(jìn)制文件流)

// 文件-圖片下載
export function downloadfile (data) {
  return request({
 ?  url: '/download/file',
 ?  method: 'post',
 ?  data,
 ?  // 指定請求類型為二進(jìn)制流
 ?  // 不寫可能會(huì)造成下載成功的圖片和文件是看不到和沒有內(nèi)容的
 ?  responseType: 'blob'
  })
}

2.下載不同文件和圖片在項(xiàng)目中可能經(jīng)常使用-可以封裝成一個(gè)方法。

2.1在utils下創(chuàng)建download.js文件

export default {
 ?  // 下載 Excel 方法
 ?  excel (data, fileName) {
 ? ?  this.download(data, fileName, 'application/vnd.ms-excel')
 ?  },
 ?
 ?  // 下載 Word 方法
 ?  word (data, fileName) {
 ? ?  this.download(data, fileName, 'application/msword')
 ?  },
 ?
 ?  // 下載 Zip 方法
 ?  zip (data, fileName) {
 ? ?  this.download(data, fileName, 'application/zip')
 ?  },
 ?
 ?  // 下載 Html 方法
 ?  html (data, fileName) {
 ? ?  this.download(data, fileName, 'text/html')
 ?  },
 ?
 ?  // 下載 Markdown 方法
 ?  markdown (data, fileName) {
 ? ?  this.download(data, fileName, 'text/markdown')
 ?  },
 ?
 ?  // 下載 pdf 方法
 ?  pdf (data, fileName) {
 ? ?  console.log('data', data)
 ? ?  console.log('fileName', fileName)
 ? ?  this.download(data, fileName, 'application/pdf')
 ?  },
 ?
 ?  // 下載 圖片方法
 ?  png (data, fileName) {
 ? ?  this.download(data, fileName, 'application/png')
 ?  },
 ?
 ?  // 兼容寫法
 ?  stream (data, fileName) {
 ? ?  this.download(data, fileName, 'application/octet-stream')
 ?  },
 ?
 ?  download (data, fileName, mineType) {
 ? ?  // 創(chuàng)建 blob對象
 ? ?  let blob = new Blob([data], { type: mineType })
 ? ?  // 瀏覽器api 有的不支持-二種都寫
 ? ?  window.URL = window.URL || window.webkitURL
 ? ?  // 獲取鏈接地址-(內(nèi)容賦值到臨時(shí)鏈接)
 ? ?  let href = URL.createObjectURL(blob)
 ? ?  // 創(chuàng)建a標(biāo)簽
 ? ?  let downA = document.createElement('a')
 ? ?  // 把鏈接賦值給a標(biāo)簽
 ? ?  downA.href = href
 ? ?  // 賦值文件名稱
 ? ?  downA.download = fileName
 ? ?  // 點(diǎn)擊下載
 ? ?  downA.click()
 ? ?  // 銷毀超連接
 ? ?  window.URL.revokeObjectURL(href)
 ?  }
  }

3.在頁面中使用

// html
<el-button type="info" @click="addclose">下載</el-button>
?
// data
datafile: {
 ? ? ?  url: '文件或者圖片地址'
 ? ?  }
 ? ? ?
// 引入方法
import download from '@/utils/download'
// 方法
// 下載
 ?  async addclose () {
 ? ?  const res = await downloadfile(this.datafile)
?
 ? ?  // 下載圖片
 ? ?  // 針對性的類型-名稱帶不帶.png都不會(huì)受影響
 ? ?  // download.png (res,'測試圖片')
 ? ?  // 帶后綴
 ? ?  // download.png (res,'測試圖片.png')
?
 ? ?  // 下載pdf文件
 ? ?  // 針對性的類型-名稱帶不帶.pdf都不會(huì)受影響
 ? ?  // download.pdf (res,'pdf文件')
 ? ?  // 帶后綴
 ? ?  download.pdf (res,'pdf文件.pdf')
?
 ? ?  // 公共方法
 ? ?  // application/octet-stream 相當(dāng)于公共類型-需要在名稱帶上指定的后綴-不然下載下來的文件沒有后綴名打不開
 ? ?  // download.stream (res,'公共方法.png')
 ? ?  // download.stream (res,'公共方法.pdf')
 ?  }

注意

  • 首先排查下載下來的文件格式是否正確,不正確檢查blob對象類型(名稱也有關(guān)系是否帶后綴名)

  • 如果發(fā)現(xiàn)下載下來的文件格式后綴正確,內(nèi)容,圖片為空,看不見,排查后端是否把內(nèi)容轉(zhuǎn)成流,前端在封裝api時(shí)是否設(shè)置responseType: 'blob'?


總結(jié):

經(jīng)過這一趟流程下來相信你也對 vue 后端返回二進(jìn)制流-前端通過blob對象下載文件-圖片 有了初步的深刻印象,但在實(shí)際開發(fā)中我 們遇到的情況肯定是不一樣的,所以我們要理解它的原理,萬變不離其宗。加油,打工人!

什么不足的地方請大家指出謝謝 -- 風(fēng)過無痕文章來源地址http://www.zghlxwxcb.cn/news/detail-752096.html

到了這里,關(guān)于vue 后端返回二進(jìn)制流-前端通過blob對象下載文件-圖片的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【JavaScript】后端返回的二進(jìn)制流音頻數(shù)據(jù)或本地音頻資源,前端如何播放?

    如果我們要使用本地的音頻資源,在 vue3 中那么我們需要對資源的地址做一下處理 后端返回二進(jìn)制流音頻數(shù)據(jù),怎么讓其可播放 前端播放二進(jìn)制語音流

    2024年02月03日
    瀏覽(32)
  • 微信小程序微信原生小程序如何通過后端返回的二進(jìn)制流導(dǎo)出excel文件并保存和轉(zhuǎn)發(fā)

    微信小程序微信原生小程序如何通過后端返回的二進(jìn)制流導(dǎo)出excel文件并保存和轉(zhuǎn)發(fā)

    首先后端返回給我們的數(shù)據(jù)是這樣的,一串二進(jìn)制流 然后直接上代碼吧,注釋基本上說的差不多了 打開后的界面就是這樣,導(dǎo)出成功,然后右上角三個(gè)點(diǎn)可以保存本地和轉(zhuǎn)發(fā)

    2024年02月11日
    瀏覽(82)
  • 通過 Blob 對二進(jìn)制流文件下載實(shí)現(xiàn)文件保存下載

    通過 Blob 對二進(jìn)制流文件下載實(shí)現(xiàn)文件保存下載

    原理 : 前端將二進(jìn)制文件做轉(zhuǎn)換 實(shí)現(xiàn)下載:請求后端接口-接收后端返回的二進(jìn)制流(通過二進(jìn)制流( Blob )下載, 把后端返回的二進(jìn)制文件放在 Blob 里面)-再通過 file-saver 插件保存 需求背景 業(yè)務(wù):下載模板文件 頁面上使用: 保存文件: 發(fā)起請求通用方法(更改 axios 的 re

    2024年02月09日
    瀏覽(37)
  • 前端:JS:將圖片轉(zhuǎn)為二進(jìn)制與其他文本傳入后端

    在前端,可以將圖片轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),并將其與其他文本字符串一起發(fā)送到后端。一種常見的方法是將所有數(shù)據(jù)組合為一個(gè) FormData 對象,然后通過 AJAX 或 Fetch API 將其發(fā)送給后端。以下是一個(gè)示例: 解釋 : 當(dāng)文件輸入框內(nèi)容發(fā)生變化時(shí),會(huì)觸發(fā) change 事件。然后,它會(huì)讀

    2024年04月26日
    瀏覽(33)
  • html 二進(jìn)制 blob 給圖片賦值

    1、html 二進(jìn)制流 (非base64),給圖片賦值 ? ? ? ? ? ? var reader = new FileReader(); ? ? ? ? ? ? reader.onload = function (e) { ? ? ? ? ? ? ? var img = document.querySelector(\\\'#canvas_img\\\'); ? ? ? ? ? ? ? img.src = e.target.result; ? ? ? ? ? ? }; ? ? ? ? ? ? // data 二進(jìn)流 ? ? ? ? ? ? reader.readAs

    2023年04月21日
    瀏覽(26)
  • uniapp小程序中處理blob二進(jìn)制流數(shù)據(jù)

    小程序中是不支持blob格式數(shù)據(jù)的,new Blob()會(huì)報(bào)錯(cuò)Blob未定義 處理方法是轉(zhuǎn)成base64格式: 首先,請求中要帶上responseType: \\\"arraybuffer\\\",保證返回的數(shù)據(jù)格式是arraybuffer 使用uni.arrayBufferToBase64() 轉(zhuǎn)化成base64格式,后續(xù)根據(jù)業(yè)務(wù)處理數(shù)據(jù)即可。 在這個(gè)代碼中,數(shù)據(jù)是一張png格式的二維

    2024年02月04日
    瀏覽(25)
  • 文件流互相轉(zhuǎn)換(blob轉(zhuǎn)base64,二進(jìn)制流)

    文件流互相轉(zhuǎn)換(blob轉(zhuǎn)base64,二進(jìn)制流)

    跟用input上傳文件的獲取到的差不多 用URL.createObjectURL(blob)轉(zhuǎn)化后是這樣

    2024年02月10日
    瀏覽(23)
  • vue如何通過$http的post方法請求下載二進(jìn)制的Excel文件

    使用此function 使用此function,?test.vue instanceName: \\\"exportExcel\\\",導(dǎo)出excel文件 instanceName: \\\"downloadLog\\\",下載.log后綴的txt文件 封裝接口 代碼中使用:

    2024年01月18日
    瀏覽(33)
  • 微信小程序獲取后臺(tái)返回的二進(jìn)制圖片

    獲取后臺(tái)返回的二進(jìn)制圖片需要先使用wx.request方法發(fā)起網(wǎng)絡(luò)請求獲取圖片數(shù)據(jù),然后將返回的數(shù)據(jù)用wx.arrayBufferToBase64方法進(jìn)行轉(zhuǎn)換,最后將轉(zhuǎn)換后的數(shù)據(jù)綁定到圖片的src屬性即可。 參考代碼如下 其中,url為后臺(tái)返回的圖片地址,responseType為返回的數(shù)據(jù)類型為二進(jìn)制數(shù)組。在

    2024年02月10日
    瀏覽(92)
  • html2canvas生成圖片地址Base64格式轉(zhuǎn)成blob在轉(zhuǎn)成file(二進(jìn)制)可正常發(fā)送(保姆教程,復(fù)制粘貼可用)

    html2canvas生成圖片地址Base64格式轉(zhuǎn)成blob在轉(zhuǎn)成file(二進(jìn)制)可正常發(fā)送(保姆教程,復(fù)制粘貼可用)

    開始:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 最終結(jié)果:? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 1.?html2canvas方法生成的圖片地址已Base64編碼形式放在img標(biāo)簽src中可直接展示生成的圖片(注意 頁面標(biāo)簽獲取位置 ,還有個(gè) setTimeout 頁面渲染需要

    2024年02月13日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包