日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JAVA讀取文件流,設置瀏覽器下載或直接預覽操作

瀏覽:25日期:2022-08-23 09:29:28

最近項目需要在瀏覽器中通過URL預覽圖片。但發現瀏覽器始終默認下載,而不是預覽。研究了一下,發現了問題:

// 設置response的Header,注意這句,如果開啟,默認瀏覽器會進行下載操作,如果注釋掉,瀏覽器會默認預覽。 response.addHeader('Content-Disposition', 'attachment;filename=' + FileUtil.getOriginalFilename(path));

然后需要注意:

response.setContentType(contentType);//不同的文件類型,contentType不一樣,比如圖片一般是image/jpeg、image/png等

@RequestMapping(value = 'getFile/{folder}/{fileName:.+}*', method = RequestMethod.GET) public void getFile(HttpServletResponse response, @PathVariable String folder, @PathVariable String fileName) { // 設置編碼 response.setCharacterEncoding('UTF-8'); try { String path = folder + '/' + fileName; boolean flag = ossClient.doesObjectExist(ossProperties.getBucket(), path); // 判斷文件是否存在 if (flag) { // 清空response response.reset(); // 設置response的Header,注意這句,如果開啟,默認瀏覽器會進行下載操作,如果注釋掉,瀏覽器會默認預覽。 // response.addHeader('Content-Disposition', // 'attachment;filename=' + FileUtil.getOriginalFilename(path)); // response.addHeader('Content-Length', '' + buf.length); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); // ByteArrayOutputStream bos = new ByteArrayOutputStream(1024); OSSObject ossObject = ossClient.getObject(ossProperties.getBucket(), path); String contentType = ossObject.getObjectMetadata().getContentType(); System.out.println(contentType); //注意contentType類型 response.setContentType(contentType); byte[] buf = new byte[1024]; InputStream in = ossObject.getObjectContent(); int L; while ((L = in.read(buf)) != -1) { // if (buf.length != 0) // { toClient.write(buf, 0, L); // } } in.close(); // 寫完以后關閉文件流 toClient.flush(); toClient.close(); // response.getOutputStream().write(bos.toByteArray()); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND, '找不到相關資源'); } } catch (IOException e) { e.printStackTrace(); } }

補充知識:【Java文件下載】如何讓瀏覽器直接下載后端返回的圖片,而不是直接打開

默認情況下,瀏覽器設定是inline形式,對于服務器返回的文件,能打開就打開,不能打開就自動下載。

Content-Disposition 設置

大多數情況下,后端都是實現一個文件管理的功能,通過文件的唯一標志去獲取文件流。后端都會讀取文件,然后文件的流寫入到response的輸出流,這樣就可以實現文件的訪問了。

但是有些時候,實現下載功能,后端返回的是圖片,瀏覽器卻直接把圖片打開了?怎么回事?

這就是Content-Disposition設置的問題,如下都是java示例:

設置為inline,如果瀏覽器支持該文件類型的預覽,就會打開,而不是下載:

response.setHeader('Content-Disposition', 'inline; filename=111.jpg');

設置為attachment,瀏覽器則直接進行下載,縱使他能夠預覽該類型的文件。

response.setHeader('Content-Disposition', 'attachment; filename=111.jpg');

特別說明:Chrome不設置Content-Type也會自動打開,如果是它可識別預覽的文件。

示例代碼

package cn.hanquan.controller;import java.io.File;import java.io.IOException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.io.FileUtils;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class DemoDownload { @RequestMapping('download') public void download(String filename, HttpServletResponse res, HttpServletRequest req) throws IOException { // 設置響應流中文件進行下載 // attachment是以附件的形式下載,inline是瀏覽器打開 // bbb.txt是下載時顯示的文件名// res.setHeader('Content-Disposition', 'attachment;filename=bbb.txt'); // 下載 res.setHeader('Content-Disposition', 'inline;filename=bbb.txt'); // 瀏覽器打開 // 把二進制流放入到響應體中 ServletOutputStream os = res.getOutputStream(); System.out.println('here download'); String path = req.getServletContext().getRealPath('files'); System.out.println('path is: ' + path); System.out.println('fileName is: ' + filename); File file = new File(path, filename); byte[] bytes = FileUtils.readFileToByteArray(file); os.write(bytes); os.flush(); os.close(); }}

瀏覽器直接打開效果

JAVA讀取文件流,設置瀏覽器下載或直接預覽操作

下載效果

JAVA讀取文件流,設置瀏覽器下載或直接預覽操作

以上這篇JAVA讀取文件流,設置瀏覽器下載或直接預覽操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精品日韩在线| 欧美亚洲国产日韩| 国产精品亚洲四区在线观看| 97精品中文字幕| 国产成人精品亚洲线观看 | 欧美黑人巨大videos精品| 美女尤物久久精品| 日韩影院免费视频| 亚洲伊人精品酒店| 婷婷成人av| 91精品尤物| 国产欧美日韩视频在线| 国产欧美丝祙| 激情中国色综合| 激情视频一区二区三区| 国产精品videosex极品| 美女精品视频在线| 日韩电影在线视频| 9色精品在线| 亚洲欧美在线专区| 国产精品色在线网站| 精品国产精品国产偷麻豆| 新版的欧美在线视频| 亚洲午夜精品久久久久久app| 亚洲精品1区| 7m精品国产导航在线| 国产69精品久久| 黄色精品网站| 青青草视频一区| www.com.cn成人| 1000部精品久久久久久久久| 夜夜嗨av一区二区三区网站四季av| 亚洲久久一区| 中文字幕在线视频久| 午夜久久av| 中文字幕人成乱码在线观看| 亚洲精品成人一区| sm捆绑调教国产免费网站在线观看| 极品日韩av| 奇米亚洲欧美| 日韩一区二区久久| 欧美日韩国产观看视频| 亚洲毛片在线| 久久久久久久久久久9不雅视频| 国产亚洲久久| 日韩伦理福利| 国产精品任我爽爆在线播放| 精品1区2区3区4区| 激情久久一区二区| 日韩欧美中文字幕在线视频| 欧美日韩精品一区二区视频| 国产精品www.| 日韩欧美中文字幕在线视频| 亚洲一区欧美激情| 91精品精品| 精品高清久久| 青青伊人久久| 亚洲人成在线影院| 亚洲精品少妇| 亚洲综合婷婷| 午夜久久tv| 欧美在线综合| 亚洲一区网站| 免费中文字幕日韩欧美| 99在线观看免费视频精品观看| 91精品综合| 婷婷激情一区| 四虎成人av| 亚洲一区二区三区四区电影| 欧美日韩中文一区二区| 日韩av二区| 国产精品亚洲四区在线观看| 巨乳诱惑日韩免费av| 日韩精品欧美| 国内精品99| 成人污污视频| 精品亚洲成人| 久久成人高清| 美女av一区| 国产91在线精品| 中文在线а√天堂| 欧美在线亚洲| 日韩影院免费视频| 日本在线不卡视频| 日韩av一区二区三区| 午夜性色一区二区三区免费视频| 久久成人国产| 日韩一区中文| 国产精品欧美三级在线观看| 日产精品一区| 在线天堂中文资源最新版| 亚洲www啪成人一区二区| 久久精品影视| 免费精品视频最新在线| 日韩精品免费一区二区夜夜嗨| 午夜电影一区| 激情久久99| 亚洲第一精品影视| 国产日韩欧美在线播放不卡| 免费在线日韩av| 中文字幕成在线观看| 99久久99久久精品国产片果冰| 99视频一区| 国产日韩视频在线| 日韩欧美一区免费| 日韩视频一区| 四虎精品一区二区免费| 精品国产欧美日韩| 欧美日韩国产高清电影| 婷婷精品在线| 精品国产一区二| 国产99精品一区| 日韩avvvv在线播放| 欧美日韩精品免费观看视完整| 国产视频一区二| 免费久久精品| 欧美成a人片免费观看久久五月天| 亚洲a一区二区三区| 97久久亚洲| 国产视频一区免费看| 国产亚洲字幕| 国产亚洲毛片| 欧美一区=区| 久久久久国产精品一区三寸| 日韩午夜高潮| 免费在线小视频| 日韩成人在线看| 偷拍欧美精品| 国产精品免费大片| 欧美日韩四区| 日本国产精品| 日本va欧美va欧美va精品| 欧美国产91| 精品深夜福利视频| 青草久久视频| 亚洲国产专区校园欧美| 国产日韩视频| 免费日韩成人| 久久国产人妖系列| 日本亚州欧洲精品不卡| 亚洲免费观看| 好看不卡的中文字幕| 成人精品天堂一区二区三区| 精品午夜av| 久久影院资源站| 亚洲视频综合| 美女网站一区| 黄色成人在线网址| 日韩视频不卡| 欧美日韩国产亚洲一区| 精品国产不卡| 亚洲天堂1区| 久久久久亚洲| 人人精品亚洲| 亚洲天堂成人| 激情综合激情| 丝袜美腿亚洲一区| 亚洲欧洲一区二区天堂久久| 久久久久美女| 国产字幕视频一区二区| 在线国产一区| 日本视频在线一区| 国产成人精品一区二区三区视频| 国产精品原创| 宅男在线一区| 亚洲精品第一| 国产情侣一区在线| 国产成人免费| 欧美91精品| 欧美在线看片| 久久国产精品美女| 久久伊人国产| 日韩中文欧美在线| 久久国产人妖系列| 亚洲1234区| 少妇高潮一区二区三区99| 激情综合五月| 免费人成网站在线观看欧美高清| 日韩精品一二三四| 日本美女一区| 美国三级日本三级久久99| 国产激情久久| 热久久免费视频| 成人亚洲一区二区| 国产精品高清一区二区| 激情欧美丁香| 国产精品红桃| 亚洲另类黄色| 激情久久久久久| 日本欧美一区二区| 日韩不卡在线观看日韩不卡视频| 四虎4545www国产精品 | 日本特黄久久久高潮| 91精品久久久久久久久久不卡| 日韩国产成人精品| 综合激情五月婷婷| 亚洲激情中文在线| 国产99在线| 欧美日韩激情| 久久国产主播|