MongoDb學習(五)---gridfs --http檔案下載
阿新 • • 發佈:2018-12-04
現在網上的文章都是用的低版本的jar包,而最新的jar包,下載的方法進行了改變。在網上也沒找到好的方法。就用原生的方法進行下載,
我也不知道對不對。反正可以下載了。就先這樣吧。後期準備還是用低版本的開發比較好。至少網上文章多。
http下載。主要獲取資料庫的內容,輸入流。然後獲取響應的輸出流。
用輸出流給網頁。進行下載。
@ResponseBody @RequestMapping("/download") public void download(HttpServletResponse response){ GridFSFile fs= gridFsTemplate.findOne(Query.query(Criteria.where("_id").is("5c0605554a24a322dfea107d"))); try { byte bs[]=new byte[1024]; GridFsResource resource = gridFsTemplate.getResource(fs); InputStream inputStream = resource.getInputStream(); ServletOutputStream outputStream= response.getOutputStream(); response.setContentType("application/octet-stream"); response.setHeader("Content-disposition","attachment;filename="+resource.getFilename()); while (inputStream.read(bs)>0){ outputStream.write(bs); } inputStream.close(); outputStream.close(); }catch (IOException e) { e.printStackTrace(); } }
低版本
/* * 下載檔案。傳入檔案id * */ @RequestMapping(value = "/files/download/{id}") public void getDownload(@PathVariable String id, HttpServletResponse response){ try { Resource resource=resourceService.get(id); if (resource!=null){ if (resource.getType()==1){ GridFSDBFile file = fileService.getFile(resource.getFileId()); if (file!=null){ response.setContentType("application/octet-stream"); OutputStream out = response.getOutputStream(); response.setHeader("Content-disposition","attachment;filename="+file.getFilename()); file.writeTo(out); out.flush(); out.close(); } }else { } } }catch (Exception e){ } }