Spring Bootプロジェクトのアップロード、ファイルのダウンロード
25692 ワード
プロジェクトで会ったら記録してください.
ファイルをアップロード
HTMLページ
ここで使っているのはboot Strap fileinputコンポーネントです.
System.get Property(「user.dir」);パラメータを指定すると、アイテムの相対パスが得られます.(ps:springboot内に埋め込まれたmcat容器であるかどうかは分かりません.ネット上のrequest.get ServletContext().getRealPath(/)方法で得られた経路はプロジェクトパスではなく、c盤の次のtomcatディレクトリ経路です.
HTMLページ
ファイルをアップロード
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
JSwindow.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();
}
}
}
}
}