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

后端如何返回一個(圖片)文件流,并在前端vue展示。

這篇具有很好參考價值的文章主要介紹了后端如何返回一個(圖片)文件流,并在前端vue展示。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

后端部分可分為三步:
1,獲取文件參數(shù)(非必須,根據(jù)自己情況添加)
2,獲取文件
3,以流形式返回
具體代碼如下:

/**
	 * 獲取文件的流
	 */
	@GetMapping("/getFileByUrl")
	@ApiOperationSupport(order = 7)
	@ApiOperation(value = "邏輯刪除", notes = "傳入ids")
	public void getFileByUrl(@ApiParam(value = "主鍵集合", required = true) @RequestParam String url,HttpServletResponse response) throws Exception {
		byte[] buffer = new byte[1024];
		FileInputStream fis = null;
		BufferedInputStream bis = null;
		try {
			//獲取部分參數(shù),用于從minIO上將文件下載到tmp(此步驟不是必須)
			String[] split = url.split("\\.");
			String suffix = split[1];
			Long userId = AuthUtil.getUser().getUserId();
			String userName = AuthUtil.getUser().getUserName();
			DownloadInvokePacket packet = InvokePacketUtil.getDownloadInvokePacketForRandomUrl("綜合檢索文件下載", String.valueOf(userId), userName, suffix, SystemEnum.MANAGE, SystemEnum.MINIO);
			//拿到這個文件
			File file = MinioUtil.publishDownload(packet, url);

			response.setContentType("application/octet-stream");
			response.setHeader("content-type", "application/octet-stream");
			response.setHeader("Content-Disposition", "attachment;fileName=download" + DateUtil.time());// 設(shè)置文件名
			//返回流處理
			fis = new FileInputStream(file);
			bis = new BufferedInputStream(fis);
			OutputStream os = response.getOutputStream();
			int i = bis.read(buffer);
			while (i != -1) {
				os.write(buffer, 0, i);
				i = bis.read(buffer);
			}
		}catch (Exception e) {

		}finally {
			if (bis != null) {
				try {
					bis.close();
				} catch (IOException ignored) {
				}
			}
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException ignored) {
				}
			}
		}
	}

前端展示部分。
1,首先在你的axios接口上添加 responseType:'blob' ,以表示你將以blob形式接收(必須添加)。

export const getFileByUrl = (url) => {
  return request({
    url: '/api/comprehensiveSearchLog/getFileByUrl',
    method: 'get',
    responseType:'blob',
    params: {url}
  })
}

2,拿到接口返回值后,將其轉(zhuǎn)為blob形式

const blob = new Blob([result.data], { type: type });
console.log(blob);
let src = window.URL.createObjectURL(blob);
console.log(src);

此時打印該blob,會是下面這種樣子:
后端如何返回一個(圖片)文件流,并在前端vue展示。
接下來,你可以將拿到的src變量打印,是這種樣子:
后端如何返回一個(圖片)文件流,并在前端vue展示。
將這個src變量賦值到標(biāo)簽的src上,就可展示此圖片了。

附:js下載工具方法文章來源地址http://www.zghlxwxcb.cn/news/detail-505529.html

/**
 * 下載excel
 * @param {blob} fileArrayBuffer 文件流
 * @param {String} filename 文件名稱
 */
export const downloadXls = (fileArrayBuffer, filename) => {
  let data = new Blob([fileArrayBuffer], { type: 'application/vnd.ms-excel,charset=utf-8' });
  if (typeof window.chrome !== 'undefined') {
    // Chrome
    var link = document.createElement('a');
    link.href = window.URL.createObjectURL(data);
    link.download = filename;
    link.click();
  } else if (typeof window.navigator.msSaveBlob !== 'undefined') {
    // IE
    var blob = new Blob([data], { type: 'application/force-download' });
    window.navigator.msSaveBlob(blob, filename);
  } else {
    // Firefox
    var file = new File([data], filename, { type: 'application/force-download' });
    window.open(URL.createObjectURL(file));
  }
};

到了這里,關(guān)于后端如何返回一個(圖片)文件流,并在前端vue展示。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 后端返回base64文件前端如何下載

    后端返回base64文件前端如何下載

    1.后端返回base64格式文件 2.前端代碼 3.請求封裝

    2024年02月05日
    瀏覽(27)
  • 后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實現(xiàn)預(yù)覽圖片以及PDF

    后端返回二進(jìn)制流,前端處理二進(jìn)制文件流,實現(xiàn)預(yù)覽圖片以及PDF

    1、首先預(yù)覽PDF需要 后端 將響應(yīng)頭 Content-Type 設(shè)置為PDF類型 application/pdf ,不能預(yù)覽,會直接下載 2、 前端 定義接口:并設(shè)置相應(yīng)類型 responseType 為 blob 請求數(shù)據(jù):通過 window.URL.createObjectURL(res) 轉(zhuǎn)成本地預(yù)覽地址, 在通過 window.open() 方法打開轉(zhuǎn)成本地預(yù)覽地址即可預(yù)覽PDF,如下

    2024年02月15日
    瀏覽(38)
  • Vue實戰(zhàn)【后端返回文件流時,前端如何處理并成功下載流文件】

    Vue實戰(zhàn)【后端返回文件流時,前端如何處理并成功下載流文件】

    哈嘍小伙伴們,在我們?nèi)粘9ぷ鳟?dāng)中,大家一定會遇到 文件導(dǎo)出 這樣的功能需求點;導(dǎo)出功能前端后端都可以實現(xiàn),通常情況下呢是由我們后端同事去處理的,那么當(dāng)我們后端同事給你返回文件流的時候,前端要怎么處理并且完成下載呢?今天就給大家說個簡單的方法,我

    2024年02月11日
    瀏覽(23)
  • 【vue2】前端實現(xiàn)下載后端返回的application/octet-stream文件流

    1、下載csv/txt時 此時無須修改接口的響應(yīng)格式 2、下載Excel時,需要修改一下接口的響應(yīng)格式為blob 另

    2024年02月11日
    瀏覽(108)
  • 后端返回圖片,前端接收并顯示的解決方案

    后端通過二進(jìn)制流的形式,寫入response中 controller層 service層 axios接受數(shù)據(jù)時,responseType 默認(rèn)返回數(shù)據(jù)類型是 json,必須將其改為返回數(shù)據(jù)類型 blob。否則axois無法正確解析數(shù)據(jù)。 這里的http.request是對axios的封裝,把他當(dāng)作axios用就行 vue界面渲染 后端接口,最好不要有返回值,

    2024年02月12日
    瀏覽(158)
  • Vue3 - 詳細(xì)實現(xiàn)下載從服務(wù)端返回的文件流 Blob 對象教程,前端下載后端接口返回的文件流并自動保存到本地,支持任何格式的文件下載(從后端拿到二進(jìn)制文件流 Blob 對象,前端實現(xiàn)點擊下載功能)

    Vue3 - 詳細(xì)實現(xiàn)下載從服務(wù)端返回的文件流 Blob 對象教程,前端下載后端接口返回的文件流并自動保存到本地,支持任何格式的文件下載(從后端拿到二進(jìn)制文件流 Blob 對象,前端實現(xiàn)點擊下載功能)

    調(diào)用服務(wù)端(后端)接口拿到文件流,通過前端下載并保存到本地。 本文 實現(xiàn)了在 vue3 項目中,通過后端接口返回的二進(jìn)制文件流 Blob 對象,在前端進(jìn)行點擊下載并保存到用戶本地,任何格式的文件都可以輕松下載, 保證您直接復(fù)制代碼,改個請求地址就可以使用了, 如下

    2024年02月04日
    瀏覽(174)
  • 后端返回文件流,前端怎么導(dǎo)出、下載

    后端返回文件流,前端怎么導(dǎo)出、下載

    ? ? ? ? 工作中肯定有很多導(dǎo)出excel、下載文件這種功能。一般都是后端做好,我們?nèi)フ埱髮?yīng)的接口就行了,前端還需要做一些處理就可以實現(xiàn)導(dǎo)出、下載功能了。具體怎么操作呢,我們來看看! ? ? ? ? 我們在請求的時候 需要定義responseType【響應(yīng)類型】為blob類型,如果

    2024年02月12日
    瀏覽(26)
  • vue前端如何去掉后端接口返回的一個字段中時間里面的時分秒 只需要年月日

    在 Vue 前端中,可以使用 JavaScript 中的 Date 對象來處理日期。對于從后端接口返回的日期字符串,可以先將其轉(zhuǎn)換為 Date 對象,然后再使用 getFullYear()、getMonth()、getDate() 等方法獲取年月日等信息 。 以下是一個示例函數(shù),它接受一個日期字符串作為參數(shù),并返回 YYYY-MM-DD 格式

    2024年02月14日
    瀏覽(21)
  • 前端處理后端返回的文件流,進(jìn)行文件下載

    前端處理后端返回的文件流,進(jìn)行文件下載

    二進(jìn)制流格式 ?Blob格式 前言: ? ? ? ? 需求:根據(jù)后端接口返回的文件流進(jìn)行數(shù)據(jù)處理,并實現(xiàn)文件的下載,且下載文件為word文檔. 封裝下載文件接口: 最開始沒帶 responseType:\\\"Blob\\\" ,進(jìn)行文件下載后,里面的內(nèi)容全部是亂碼?。?! 代碼實現(xiàn): ?知識點補充: ? ? ? ? 1、n

    2024年02月07日
    瀏覽(93)
  • 后端返回URL,前端如何實現(xiàn)下載

    1. 在實際開發(fā)過程中,實現(xiàn)文件下載功能,后端一般是返回一個文件流,我們只需要拿到這個文件流后,再使用 new Blob轉(zhuǎn)化成blob格式 的數(shù)據(jù),然后 創(chuàng)建一個a鏈接元素 進(jìn)行下載就行了: (“本段代碼是之前寫案例時從別處copy的,都有注釋省了自己寫,哈哈哈,侵刪”) 2. 但

    2024年02月04日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包