多文件上傳以及java後臺接受

最近項目用到的,實現多文件以及一些信息上傳,

以及後臺接收及讀取用到了springspringmvc相關框架。

不多說廢話,直接上例子(這有關鍵代碼)

 

首先,前臺頁面

<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();
      }
   }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章