servlet實現檔案下載demo
一:web.xml配置servlet入口
<span style="font-size:18px;"><strong> <servlet>
<servlet-name>DownLoadAttachmentServlet</servlet-name>
<servlet-class>com.bright.servlet.DownLoadAttachmentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DownLoadAttachmentServlet</servlet-name>
<url-pattern>/downloadAttachment.do</url-pattern>
</servlet-mapping>
</strong></span>
二:Servlet實現
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bright.resource.action.ArticleAction;
import com.bright.resource.entity.Article;
import com.bright.util.PropsUtil;
/**
* @author Administrator
*
*/
public class DownLoadAttachmentServlet extends HttpServlet{
private static final long serialVersionUID = -1273430545946412812L;
@Override
public void init(){
System.out.println("---------------------init");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
try{
System.out.println("----------------------------doGet");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
out.print("Hello 大家好");
out.close();
}catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse response) throws IOException {
String articleId = req.getParameter("articleId");
ArticleAction action = new ArticleAction();
Article article = null;
try {
article = action.getArticleById(Long.parseLong(articleId));
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (Throwable e) {
e.printStackTrace();
}
//建立要下載的檔案的物件(引數為要下載的檔案在伺服器上的路徑)
String path = PropsUtil.property("localResourceDir")+article.getUrlAttachment()+"/"+article.getAttachmentFilename();
File serverFile=new File(path);
//設定要顯示在儲存視窗的檔名,如果檔名中有中文的話,則要設定字符集,否則會出現亂碼。另外,要寫上檔案字尾名
String fileName = java.net.URLEncoder.encode(article.getAttachmentFilename(),"utf-8");
//該步是最關鍵的一步,使用setHeader()方法彈出"是否要儲存"的對話方塊,打引號的部分都是固定的值,不要改變
response.setHeader("Content-disposition","attachment;filename="+fileName);
/*
* 以下四行程式碼經測試似乎可有可無,可能是我測試的檔案太小或者其他什麼原因。。。
*/
response.setContentType("application/msword");
//定義下載檔案的長度 /位元組
long fileLength=serverFile.length();
//把長整形的檔案長度轉換為字串
String length=String.valueOf(fileLength);
//設定檔案長度(如果是Post請求,則這步不可少)
response.setHeader("content_Length",length);
/*
*以上內容僅是下載一個空檔案
*以下內容用於將伺服器中相應的檔案內容以流的形式寫入到該空檔案中
*/
//獲得一個 ServletOutputStream(向客戶端傳送二進位制資料的輸出流)物件
OutputStream servletOutPutStream=response.getOutputStream();
//獲得一個從伺服器上的檔案myFile中獲得輸入位元組的輸入流物件
FileInputStream fileInputStream=new FileInputStream(serverFile);
byte bytes[]=new byte[1024];//設定緩衝區為1024個位元組,即1KB
int len=0;
//讀取資料。返回值為讀入緩衝區的位元組總數,如果到達檔案末尾,則返回-1
while((len=fileInputStream.read(bytes))!=-1)
{
//將指定 byte陣列中從下標 0 開始的 len個位元組寫入此檔案輸出流,(即讀了多少就寫入多少)
servletOutPutStream.write(bytes,0,len);
}
servletOutPutStream.close();
fileInputStream.close();
}
@Override
public void destroy() {
super.destroy();
System.out.println("----------------------------destroy");
}
}
三:呼叫方式 XXXX/downloadAttachment.do注意用post方式提交
相關文章
- 使用Servlet實現檔案下載Servlet
- python 下載檔案demoPython
- servlet實現下載功能Servlet
- Flutter實現檔案下載Flutter
- AJAX實現檔案下載----
- Flutter 實現檔案下載功能Flutter
- vc實現https檔案下載HTTP
- Java實現檔案下載功能Java
- js實現txt/excel檔案下載JSExcel
- 2020JavaWeb實現檔案下載JavaWeb
- Feign實現檔案上傳下載
- js下載檔案的實現方式JS
- vue/js實現檔案流下載,檔案下載進度監聽VueJS
- SpringMVC實現檔案上傳&下載(2)SpringMVC
- javaWeb不生成臨時檔案實現壓縮檔案下載JavaWeb
- iis實現點選檔案下載而不是開啟檔案
- 前端實現檔案下載和拖拽上傳前端
- .netcore+vue 實現壓縮檔案下載NetCoreVue
- java實現檔案的下載的方法概述Java
- React中使用fetch實現檔案上傳下載React
- Java實現多檔案邊壓縮邊下載Java
- Java多執行緒檔案分片下載實現Java執行緒
- Javascript 實現一個post方式的檔案下載JavaScript
- OSS實現檔案下載進度條顯示
- Python使用socket_TCP實現小檔案下載PythonTCP
- vue實現Excel檔案的上傳與下載VueExcel
- JavaWeb之實現檔案上傳與下載工具JavaWeb
- JavaWeb之實現檔案上傳與下載元件JavaWeb元件
- JavaWeb之實現檔案上傳與下載示例JavaWeb
- js實現使用檔案流下載csv檔案JS
- 點選按鈕,實現檔案下載,通過按鈕傳送url,spring後臺實現伺服器端檔案下載。Spring伺服器
- springCloud 微服務通過minio實現檔案上傳和檔案下載介面SpringGCCloud微服務
- 教你如何實現c#檔案上傳下載功能C#
- JavaWeb之實現檔案上傳與下載外掛JavaWeb
- JavaWeb之實現檔案上傳與下載原始碼JavaWeb原始碼
- JavaWeb之實現檔案上傳與下載例項JavaWeb
- 02vue+axios+form實現檔案下載(附Java實現程式碼)VueiOSORMJava
- 檔案下載
- servlet上傳下載Servlet