Java是一門面標的目的對象編程說話,不僅接收了C++說話的各類長處,還摒棄了C++里難以理解的多擔當、指針等概念,是以Java說話具有功能壯大和簡單易用兩個特征。Java說話作為靜態面標的目的對象編程說話的代表,極好地實現了面標的目的對象理論,許可程序員以優雅的思維體例進行復雜的編程 。
Java具有簡單性、面標的目的對象、分布式、健壯性、平安性、平臺自力與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等 。
第一步:思緒。
1、起首我們要理解上傳文件的步調,上傳文件時為例避免文件重名,一般城市生當作一個UUID或者時候戳作為文件名,然后將文件真實的名字和存儲的名字放在數據庫表中的一筆記錄中。
2、下載和在前臺展示的到時辰查詢數據庫的記實。
2.1:展示前臺的是原始名稱
2.2:下載時按照UUID名字進行查找。
3、借助于springMVC實現下載上傳。
第二步:下載代碼實現。
代碼本家兒要本家兒要包羅
1、前臺頁面跳轉,并查詢數據庫原始文件名展示
2、下載,按照數據庫id查詢文件存放路徑下載
@Controller@RequestMapping("/downloadImg")public class DownloadController { @RequestMapping("toIndex") public ModelAndView toIndex(HttpServletRequest request, HttpServletResponse response){ //想數據庫請求查詢獲得原始文件名展示 ModelAndView mv = new ModelAndView("index"); mv.addObject("name","火影"); return mv; } @ResponseBody @RequestMapping("/download") public void testUrl(HttpServletRequest request) throws UnsupportedEncodingException { //獲取請求的url StringBuffer url = request.getRequestURL(); //獲取url后面的參數 String urlParame = request.getQueryString();; System.out.println("url:"+ url); System.out.println("urlParame:"+ urlParame); //按照參數名稱獲取參數 String name = request.getParameter("name"); System.out.println("name:"+ new String(name.getBytes("ISO-8859-1"),"utf-8")); } public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException { //讀取文件 File file = new File("D:/img/火影2.jpg"); byte[] body = null; InputStream is = new FileInputStream(file); body = new byte[is.available()]; is.read(body); HttpHeaders headers = new HttpHeaders(); //設置文件頭 headers.add("Content-Disposition", "attchement;filename=" + new String( "火影2.jpg".getBytes("gb2312"), "ISO8859-1" )); HttpStatus statusCode = HttpStatus.OK; ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode); return entity; }}
第三步:測試。
1、打開跳轉頁面。
2、下載請求,如下所示下載當作功
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!