日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作

發布時間:2025/3/11 HTML 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 看书浏览器官_JAVA读取文件流,设置浏览器下载或直接预览操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近項目需要在瀏覽器中通過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;

@controller

public 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读取文件流,设置浏览器下载或直接预览操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。