從Springboot項目中下載文件的具體過程
最近在做一個臨時的項目,APP端在檢測到程序有更新時,需要去后臺下載新的安裝包。具體過程如下:
controller層:
/** * 下載app * @param response */ @RequestMapping("downApp") @ResponseBody public void Download(HttpServletResponse response) { String fileName ="wuye.apk"; String result = FileUtil.downloadFile(response, fileName); log.info("app包下載結(jié)果:",result); }
工具類:
public class FileUtil { public static String downloadFile(HttpServletResponse response, String fileName) { File path =null; response.setHeader("content-type","application/octet-stream"); response.setContentType("application/octet-stream"); try { response.setHeader("Content-Disposition","attachment;filename=" + java.net.URLEncoder.encode(fileName,"UTF-8")); }catch (UnsupportedEncodingException e2) { e2.printStackTrace(); } byte[] buff =new byte[1024]; BufferedInputStream bis =null; OutputStream os =null; try { path =new File(ResourceUtils.getURL("classpath:").getPath()); os = response.getOutputStream(); bis =new BufferedInputStream(new FileInputStream(new File(path +"/doc/" + fileName))); int i = bis.read(buff); while (i != -1) { os.write(buff,0, buff.length); os.flush(); i = bis.read(buff); } }catch (FileNotFoundException e1) { //e1.getMessage()+"系統(tǒng)找不到指定的文件"; return "系統(tǒng)找不到指定的文件"; }catch (IOException e) { e.printStackTrace(); }finally { if (bis !=null) { try { bis.close(); }catch (IOException e) { e.printStackTrace(); } } } return "success"; }
訪問:http://127.0.0.1:8081/ymd/downApp 文件就下載下來了,本方法借鑒了 網(wǎng)絡(luò)上的一些文章
到此這篇關(guān)于從Springboot項目中下載文件的文章就介紹到這了,更多相關(guān)Springboot項目下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何利用 Either 和 Option 進行函數(shù)式錯誤處理
這篇文章主要介紹了如何利用 Either 和 Option 進行函數(shù)式錯誤處理。在 Java 中,錯誤的處理在傳統(tǒng)上由異常以及創(chuàng)建和傳播異常的語言支持進行。但是,如果不存在結(jié)構(gòu)化異常處理又如何呢?,需要的朋友可以參考下2019-06-06淺談java多態(tài)的實現(xiàn)主要體現(xiàn)在哪些方面
下面小編就為大家?guī)硪黄獪\談java多態(tài)的實現(xiàn)主要體現(xiàn)在哪些方面。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09java 實現(xiàn)發(fā)短信功能---騰訊云短信
如今發(fā)短信功能已經(jīng)成為互聯(lián)網(wǎng)公司的標(biāo)配,接下來通過本文給大家介紹java 實現(xiàn)發(fā)短信功能---騰訊云短信 ,需要的朋友可以參考下2019-08-08Java集合類的組織結(jié)構(gòu)和繼承、實現(xiàn)關(guān)系詳解
這篇文章主要介紹了Java集合類的組織結(jié)構(gòu)和繼承、實現(xiàn)關(guān)系,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11Spring 靜態(tài)變量/構(gòu)造函數(shù)注入失敗的解決方案
我們經(jīng)常會遇到一下問題:Spring對靜態(tài)變量的注入為空、在構(gòu)造函數(shù)中使用Spring容器中的Bean對象,得到的結(jié)果為空。不要擔(dān)心,本文將為大家介紹如何解決這些問題,跟隨小編來看看吧2021-11-11使用synchronized關(guān)鍵字實現(xiàn)信號量的方法
在Java中,信號量(Semaphore)是一種常用的同步工具,它可以用來控制對共享資源的訪問數(shù)量,下面,我們將使用Synchronized關(guān)鍵字來實現(xiàn)一個簡單的信號量,我們的目標(biāo)是實現(xiàn)一個計數(shù)信號量,其中信號量的計數(shù)指示可以同時訪問某一資源的線程數(shù),需要的朋友可以參考下2024-04-04