1. 程式人生 > >使用springmvc實現檔案下載

使用springmvc實現檔案下載

       檔案下載比較簡單,直接在頁面給出了一個url,該url的屬性包括要下載檔案的檔名以及路徑,就可以實現檔案下載了。但是如果該檔案的檔名為中文檔名,在某些早起的瀏覽器上就會導致下載失敗;如果使用最新的Firefox、Chrome、Opera、Safari則都可以正常下載檔名為中文的檔案了。

SpringMVC提供了一個ResponseEntity型別,使用它可以很方便地定義返回的HttpHeaders和HttpStatus。以下檔案下載程式碼:

@RequestMapping(value ="/DownloadFile")

public ResponseEntity<byte

[]> DownloadFile(HttpServletRequestreq, HttpServletResponseresp)throws ServletException, IOException {

     //  接受的是UTF-8

req.setCharacterEncoding("utf-8");

//獲取專案根目錄

String path="D:\\tomcat\\apache-tomcat-7.0.52\\apache-tomcat-7.0.52\\wtpwebapps\\AjaxUpload\\反饋報告.pdf";

//獲取檔名

String filename="反饋報告

.pdf";

File file = null;

HttpHeaders headers =null;

try {

System.out.println(filename);//myfiles

file =new File(path);

//請求頭

headers =new HttpHeaders();

StringfileName1 =new String(filename.getBytes("UTF-8"),"iso-8859-1");//解決檔名亂碼

//通知瀏覽器以attachment(下載方式)開啟圖片

headers.setContentDispositionFormData("attachment"

,fileName1);

//application/octet-stream二進位制流資料(最常見的檔案下載)。

headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

} catch (Exceptione) {

thrownew RuntimeException(e);

}

returnnew ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.OK);

DownloadFil處理方法接收頁面傳遞的檔名filename和路徑後,使用Apache Commons FileUpload元件的FileUtils讀取專案的檔案,並將其構建成ResponseEntity物件返回客戶端下載。使用ResponseEntity物件,可以很方便的定義返回的HttpHeaders和HttpStatus。上面程式碼中的MediaType,代表的是Internet Media Type,即網際網路媒體型別,也叫做MIME型別。在Http協議訊息頭中,使用Content-Type來表示具體請求中的媒體型別資訊。HttpStatus型別代表的是Http協議中的狀態(這裡有一個問題就是,這個http狀態網上很多文章都是用的HttpStatus.CREATED,如果你用的火狐或谷歌瀏覽器那麼一點問題都沒有,然而使用IE瀏覽器是無法下載的,這個問題弄了好久才得以解決,下面是我的測試)。

1.  IE瀏覽器使用HttpStatus.CREATED:

 

2.     IE瀏覽器使用HttpStatus.OK:

由此可見檔案下載的Http協議中的狀態最好使用HttpStatus.OK。

相關推薦

SpringMVC實現檔案下載功能(檔案匯出功能)

1.頁面程式碼 <a class="layui-btn" href="${pageContext.request.contextPath}/bAndWListManage/downloadWhiteListTmp.do" onclick="downloadTempla

SpringMVC實現檔案下載的兩種方式及多檔案下載

1.傳統方法 @RequestMapping("/download") public String download( String fileName ,String filePath, HttpServletRequest request, HttpServl

使用springmvc實現檔案下載

       檔案下載比較簡單,直接在頁面給出了一個url,該url的屬性包括要下載檔案的檔名以及路徑,就可以實現檔案下載了。但是如果該檔案的檔名為中文檔名,在某些早起的瀏覽器上就會導致下載失敗;如果使用最新的Firefox、Chrome、Opera、Safari則都可以

- springmvc實現檔案下載

前言:        實現檔案下載的功能網上有很多案例。在這小編隨筆寫一篇關於springmvc實現檔案下載的隨筆!如果有興趣的同學可以看一下,沒有太多的技術要點。實現步驟:                先說說開發的思路,有思路了開發也就簡單了。沒思路開發就很難了!    

javaweb簡單通過springmvc實現檔案下載

@RequestMapping("/downloadApk")public ResponseEntity<byte[]> DownloadAPK(HttpServletRequest req, HttpServletResponse resp) throws IOException {//確定文字

SpringMVC——實現檔案上傳下載

一、檔案上傳 1.引入依賴包 在pom.xml檔案中新增如下內容,引入 commons-fileupload 和 commons-io 兩個包。 <dependency> <groupId>commons-f

使用springMVC實現檔案上傳和下載檔案下載

接上一篇,檔案下載需要獲取下載檔案的儲存路徑,這裡只是手動填入,如果是在具體專案中,可以把檔名和上傳後的儲存路徑儲存在資料庫中。然後增加一個檔案列表的頁面展示檔名和檔案路徑,然後點選下載的時候把相應的

springmvc實現檔案上傳和下載

springmvc實現檔案上傳的步驟: 1.頁面上,通過input來準備file元件,該標籤,必須給定name屬性值(該name不能和實體類的屬性名一致)同時,要求form表單必須給定一個屬性:enctype="multipart/form-data"<form a

SocketIo+SpringMvc實現檔案的上傳下載

socketIo不僅可以用來做聊天工具,也可以實現區域網(當然你如果有外網也可用外網)內實現檔案的上傳和下載,下面是程式碼的效果演示: GIT地址: https://github.com/fengcharly/sockeio-springMvcUpload.git 部

springmvc實現圖片下載以及在瀏覽器顯示

trace input inpu con req pub servlet @override puts 一、不在同一臺主機,通過給對方文件的方式Controller@RequestMapping(value = "/down/{uuid}", metho

Spring 實現檔案下載功能

方式1: public void download(HttpServletResponse response,@RequestParam(value="params") String params) throws IOException, DocumentException{ response

JQuery 實現檔案下載

GET方式 window.location.href = url; POST方式 var url = "下載介面地址"; // 構造隱藏的form表單 var $form = $("<form id='download' class='hidden' method='po

Servlet實現檔案下載

在瀏覽網站的時候很多涉及到檔案下載的情況,在初學JavaWeb的時候我們如何使用Servlet來實現檔案下載呢? 在學習此之前,我們要知道兩個重要的概念。request和response。請求和相應。 請求:請求頭、請求行、請求體。 相應:相應頭、相應行、相應體。 大家可以上網找一下

java web實現檔案下載

javaweb實現檔案下載 實現檔案下載 解決下載檔名帶有中文亂碼問題 效果圖 實現思路 根據請求連接獲取檔名和檔案型別,設定響應頭,獲取輸入流和輸出流 核心程式碼 public void doGet(HttpServletR

mvc 在彈出框中實現檔案下載

var myParent = parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent.parent; FileDown = function (fileName, realFileName) { $

前端實現檔案下載和拖拽上傳

蘇格團隊 作者:WDZ 交流QQ群:855833773 歡迎加入我們的團隊,微信聯絡方式:foreverpx_cjl 筆者在業務中碰到了需要下載示例和拖拽上傳並實現進度條的功能,針對過程中遇到的問題,筆者進行了相應的總結。 需求 頁面中增加下載示例按鈕

Java多執行緒使用執行緒池實現檔案下載

多執行緒下載原理: 1、基本思路是將檔案分段切割、分段傳輸、分段儲存。 2、分段切割用到HttpUrlConnection物件的setRequestProperty(“Range”, “bytes=” + start + “-” + end)方法。 3、分段傳輸用到HttpU

使用Servlet實現檔案下載

檔案下載 直接在html或jsp頁面寫入超連結 <!--點選後 瀏覽器可以解析的會自動開啟 不能解析度提示下載--> <a href="專案名/資源路徑">資源路</a> 編寫檔案下載功能 即不讓瀏覽器解析

SpringMVC實現檔案上傳

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframew

Spring Boot實現檔案下載功能

我們只需要建立一個控制器(Controler)檔案,即Controller目錄下的File_Download.java,其完整目錄如下: @Controller public class File_Download { //實現Spring Boot 的檔案下載功能,對映網址為/download