Spring Bootプロジェクトのアップロード、ファイルのダウンロード

25692 ワード

プロジェクトで会ったら記録してください.
ファイルをアップロード
HTMLページ
<div class="file-loading">
	<input id="test_file" type="file" class="file-loading" accept="image/*,.pdf,.xlsx,.xls,.docx,.doc" name="file">
</div>
JS
ここで使っているのはboot Strap fileinputコンポーネントです.
$("#test_file").fileinput({
        uploadUrl: "../isv/agasdhdgjdfghdh",//"/file-upload-single/1",//     
        language:'zh',//    ,  
        dropZoneTitle: '           …        ',
        allowedFileExtensions: ['jpg','png','xlsx','pdf','xls','doc','docx'],//       
        showUpload: false, //        
        showRemove: true, //      
        showPreview: true, //      
        dropZoneEnabled: true,//        ,
        showCaption: true,//        ,   true
        uploadAsync: true, //      
        browseClass: "btn btn-primary", //     /     CSS 。   btn btn-primary
        minFileCount: 1, //            。     0,          。   0
        maxFileCount: 1, //            。     0,              。   0
        previewFileIcon: "",//                 ,                 。     
        msgInvalidFileExtension: "          {name}.     {extensions}      .",
        enctype: 'multipart/form-data',
	}).on("filebatchselected", function(e, files) {        
        $(this).fileinput("upload");             //              。
    });
コントローラ
System.get Property(「user.dir」);パラメータを指定すると、アイテムの相対パスが得られます.(ps:springboot内に埋め込まれたmcat容器であるかどうかは分かりません.ネット上のrequest.get ServletContext().getRealPath(/)方法で得られた経路はプロジェクトパスではなく、c盤の次のtomcatディレクトリ経路です.
	@RequestMapping("/saveFile")
	@ResponseBody
	public JSONObject saveFile(@RequestParam("file") MultipartFile file) {
		//     
		String fileName = file.getOriginalFilename();
		//     
		String subffix = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
		//      ,       ,           ,                    。
		String newFileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
		//        
		String filePath = System.getProperty("user.dir")+"\\src\\main\\resources\\templates\\files";
		File newFile = new File(filePath);
		//    
		file.transferTo(new File(newFile+"\\"+newFileName+"."+subffix));
        //    
		String realpath = newFile+"\\"+newFileName+"."+subffix;
        //    
		josn = getJsonResult(true, realpath ,StateParameter.SUCCESSFUL_MSG);
			
		return josn;
	}
	
ファイルをダウンロード
HTMLページ
  bootStrap-Table       ,       ,  HTML  	
JS
window.operateEvents={
		"click #file_list_tab_down_load":function (e, value, row, index) {//  
			//     from  input  ,      from      
			//               id,    
			var $eleForm = $("
+
row.id+" style='display: none;'>"); // $eleForm.attr("action","http://localhost:8080/isv/downFile"); //body from $(document.body).append($eleForm); // , $eleForm.submit(); } }
コントローラ
	/**
	 *     
	 * @param res
	 * @param id
	 */
	@RequestMapping( value = "/downFile")
	@ResponseBody
	public void downFile(HttpServletResponse res,@RequestParam(name = "fileId") Integer id ) {
		//      RequestParam name    from    input  name   ,       
		//      ,  ,   ,          
		FileObject fileObject = iRepairOrderService.getOneFileObject(id);
		for(int x=0;x<2;x++) {
			res.setHeader("content-type", "application/octet-stream");
			res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");  
			try {
				//         ,           
				res.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"",URLEncoder.encode(fileObject.getFileName(), "utf-8") ));
			} catch (UnsupportedEncodingException e1) {
				System.err.println(e1.getMessage());
				e1.printStackTrace();
			}  
			res.setHeader("Pragma", "no-cache");  
			res.setHeader("Expires", "0");  
		    res.setContentType("application/octet-stream;charset=utf-8");
		    byte[] buff = new byte[1024];
		    BufferedInputStream bis = null;
		    OutputStream os = null;
		    try {
		      os = res.getOutputStream();
		      //           
		      bis = new BufferedInputStream(new FileInputStream( 
		                new File(System.getProperty("user.dir")+"\\src\\main\\resources\\templates\\files\\" + fileObject.getNewFileName())));
		      int i = bis.read(buff);
		 
		      while (i != -1) {
		        os.write(buff, 0, buff.length);
		        os.flush();
		        i = bis.read(buff);
		      }
		    } catch ( IOException e ) {
		      e.printStackTrace();
		    } finally {
		      if (bis != null) {
		        try {
		          bis.close();
		        } catch (IOException e) {
		          e.printStackTrace();
		        }
		      }
		    }
		  }
		}