1. 程式人生 > >MongoDb學習(五)---gridfs --http檔案下載

MongoDb學習(五)---gridfs --http檔案下載

現在網上的文章都是用的低版本的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){
    }

    }