JavaWeb文件下載功能實(shí)例代碼
在工作中遇到的一個(gè)下載文件的功能,自己將其抽取出來(lái),代碼簡(jiǎn)單,希望能幫到大家,好了,話(huà)不多說(shuō),上代碼!
public void downloadFile(File file, String downName, HttpServletRequest request, HttpServletResponse response) {
OutputStream out = null;
FileInputStream fin = null;
BufferedInputStream bin = null;
try {
if (file.exists()) {
String finalFileName = null;
String agent = request.getHeader("User-Agent");
boolean isMSIE = (agent != null && agent.indexOf("MSIE") != -1);
if (isMSIE) {
finalFileName = URLEncoder.encode(downName, "UTF8");
} else {
finalFileName = new String(downName.getBytes("UTF-8"), "ISO-8859-1");
}
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=".concat(finalFileName));
out = response.getOutputStream();
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
for (int data = bin.read(); data > -1; data = bin.read()) {
out.write(data);
}
} else {
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bin != null)
bin.close();
if (fin != null)
fin.close();
if (out != null)
out.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
以上就是本文JavaWeb文件下載的代碼,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片)的詳細(xì)代碼
這篇文章主要為大家詳細(xì)介紹了利用Java實(shí)現(xiàn)word導(dǎo)入導(dǎo)出富文本(含圖片),文中的示例代碼講解詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下2024-02-02
spring整合JMS實(shí)現(xiàn)同步收發(fā)消息(基于ActiveMQ的實(shí)現(xiàn))
本篇文章主要介紹了spring整合JMS實(shí)現(xiàn)同步收發(fā)消息(基于ActiveMQ的實(shí)現(xiàn)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Mybatis詳解動(dòng)態(tài)SQL以及單表多表查詢(xún)的應(yīng)用
MyBatis的動(dòng)態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語(yǔ)句中實(shí)現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級(jí)強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句的相關(guān)資料,需要的朋友可以參考下2022-06-06
在Java中Collection的一些常用方法總結(jié)
今天給大家?guī)?lái)的知識(shí)是關(guān)于Java的,文章圍繞著Java中Collection的一些常用方法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
springcloud中RabbitMQ死信隊(duì)列與延遲交換機(jī)實(shí)現(xiàn)方法
死信隊(duì)列是消息隊(duì)列中非常重要的概念,同時(shí)我們需要業(yè)務(wù)場(chǎng)景中都需要延遲發(fā)送的概念,比如12306中的30分鐘后未支付訂單取消,那么本期,我們就來(lái)講解死信隊(duì)列,以及如何通過(guò)延遲交換機(jī)來(lái)實(shí)現(xiàn)延遲發(fā)送的需求,感興趣的朋友一起看看吧2022-05-05
LeetCode程序員面試題之無(wú)重復(fù)字符的最長(zhǎng)子串
Java計(jì)算無(wú)重復(fù)字符的最長(zhǎng)子串是一種常見(jiàn)的字符串處理算法,它的目的是找出一個(gè)字符串中無(wú)重復(fù)字符的最長(zhǎng)子串。該算法可以很好地解決一些字符串處理問(wèn)題,比如尋找字符串中重復(fù)字符的位置,以及計(jì)算字符串中無(wú)重復(fù)字符的最長(zhǎng)子串的長(zhǎng)度。2023-02-02

