前台頁面
<form action="/uploader/upload/uploadFiles" method="post" enctype="multipart/form-data">
<input type="file"size="30" name="uploadify"multiple="true"
id="files" />
<button id="uploadFiles">上傳文件</button>
<input type="hidden" id="username"name="username" />
<input type="hidden" id="directory" name="directory"/>
</form>
解釋說明
action中的地址為我后台接受文件的地址
因為上傳文件,所以enctype="multipart/form-data"是必須的
同時選擇多個文件上傳,不使用各種控件的話,把multiple設置為"true"即可。
另外,上傳文件input中的name屬性很重要,后台獲取文件會用到的。
下面上后台代碼,username和directory可以在參數中直接獲取
@RequestMapping(value = "/uploadFiles", method = RequestMethod.POST, consumes = "multipart/*")
publicvoid uploadFilesFromHtml(
@RequestParam(defaultValue = "") String username,
@RequestParam(defaultValue = "") String directory,
MultipartHttpServletRequest request)
throws FileUploadException,IOException {
MultiValueMap<String,MultipartFile> map = request.getMultiFileMap();// 為了獲取文件,這個類是必須的
List<MultipartFile> list = map.get("uploadify");// 獲取到文件的列表
Stringpath= getFilePath(username,directory); //忽略掉,為文件最終上傳的地址
List<String>filenameList= newArrayList<>();//
// 將圖片進行存儲
for (MultipartFile mFile : list) {
StringoriginalFileName= mFile.getOriginalFilename();//獲取文件名稱
filenameList.add(originalFileName);
byte[] bytes = mFile.getBytes();//獲取字節數組
StringfilePath= path+ File.separator+ originalFileName;
FileOutputStreamfos= newFileOutputStream(newFile(filePath)); //寫出到文件
fos.write(bytes);
fos.flush();
fos.close();
}
}