国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

關于SpingMVC實現文件下載你所不知道的

2019-11-15 00:59:01
字體:
來源:轉載
供稿:網友
關于SpingMVC實現文件下載你所不知道的

文件的上傳下載一般在項目中還是非常實用的,此處專門整理一下文件的下載,至于文件的上傳實現將在后續中補上。文件的下載多用于模板文件的下載,這在項目中用的還是挺多的。今天用到了就整理出來了,以供搬運工們借鑒并使用,已驗證無誤。

(1) 前臺實現

前臺實現非常簡單,不像文件上傳那樣復雜,只要給出一個超鏈接,鏈接到后臺處理的方法,并且需要將文件名傳入Controller。

(2) 后臺處理

后臺的Controller就主要處理這樣幾個問題:

①根據文件名,找到模板文件

②設置響應的形式、文件頭、編碼

③通過流的形式讀取模板文件內容并將之寫入輸出流

④關閉輸入輸出流

(3) 下面我們根據前臺后臺的實現思路來具體看一下實現代碼:

①前臺:

<a href="${base}/downloadTemplate?fileName=abilityTemplate.xlsx">模板下載</a>

②后臺:

 @RequestMapping(value = "/downloadTemplate",method = RequestMethod.GET)

public String downloadAbilityTemplate(String fileName,HttpServletRequest request,HttpServletResponse response){

response.setCharacterEncoding("utf-8");//設置編碼

response.setContentType("mult

response.setHeader("Content-Disposition", "attachment;fileName="+ fileName); //設置響應頭

try {

String filePath = Config.getValue("path");

//獲取配置文件中模板文件所在目錄

String path = request.getsession().getServletContext().getRealPath("/")+filePath;

//獲取模板文件的相對目錄

InputStream inputStream = new FileInputStream(new File(path+ File.separator + fileName));

OutputStream os = response.getOutputStream();

byte[] b = new byte[2048];

int length;

while ((length = inputStream.read(b)) > 0) {

os.write(b, 0, length);

}//邊讀模板文件邊寫入輸出流

os.close();

inputStream.close();//關流

} catch (FileNotFoundException e) {

e.PRintStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return null; //注意此時return null

}

(4) 注意點:

①返回模型層應該是return null,否則出現如下錯誤:

java+getOutputStream()hasalreadybeencalledforthisresponse

②模板文件的位置可以根據需要存放,只要在后臺能獲取到此文件的全路徑就行

放在class目錄下獲取是:

//獲取classes所在路徑

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();

//獲取WebRoot目錄:

String path = request.getSession().getServletContext().getRealPath("/")


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长春市| 会宁县| 北碚区| 酒泉市| 彝良县| 公安县| 晋中市| 宜春市| 卓资县| 六安市| 阳谷县| 芦山县| 罗甸县| 自治县| 左贡县| 白玉县| 恩平市| 天长市| 焉耆| 宁波市| 汉源县| 新巴尔虎右旗| 凤翔县| 凌源市| 双柏县| 成安县| 四平市| 白山市| 高安市| 沽源县| 榆社县| 贵州省| 眉山市| 巴中市| 建德市| 遂溪县| 泌阳县| 巫溪县| 怀柔区| 灵璧县| 柳河县|