文件上傳不顯示上傳選擇文本域

2019-05-30 20:55 更新

在使用SwaggerBootstrapUi的朋友經(jīng)常詢問的一個問題,為什么上傳參數(shù)file對象不顯示file文本域,而是普通文本,如下圖:

因為Springfox-Swagger針對不同的版本,某些版本也會出現(xiàn)此問題,為一勞永逸,SwaggerBootstrapUi特別指定需要強指定dataType類型為MultipartFile

代碼示例(UploadController.java):

  1. @ApiOperation(value = "文件素材上傳接口")
  2. @ApiImplicitParams({@ApiImplicitParam(name = "file[]", value = "文件流對象,接收數(shù)組格式", required = true,dataType = "MultipartFile",allowMultiple = true),
  3. @ApiImplicitParam(name = "title", value = "title", required = true)}
  4. )
  5. @RequestMapping(value="/uploadMaterial",method = RequestMethod.POST)
  6. @ResponseBody
  7. public RestMessage uploadMaterial(@RequestParam(value="file[]",required = true) MultipartFile[] files,@RequestParam(value = "title") String title, HttpServletRequest request) throws IOException {
  8. //int mul=1*1024*1024;
  9. String realPath=request.getSession().getServletContext().getRealPath("/upload");
  10. File realFile=new File(realPath);
  11. if (!realFile.exists()){
  12. realFile.mkdirs();
  13. }
  14. List<Map> uploadFiles= Lists.newArrayList();
  15. System.out.println("進入圖片上傳接口:"+files.length +"張");
  16. for (MultipartFile file : files) {
  17. File targetFile=new File(realFile,file.getOriginalFilename());
  18. FileOutputStream fileOutputStream=null;
  19. InputStream ins=null;
  20. try{
  21. fileOutputStream=new FileOutputStream(targetFile);
  22. int i=-1;
  23. byte[] bytes=new byte[1024*1024];
  24. ins=file.getInputStream();
  25. while ((i=ins.read(bytes))!=-1){
  26. fileOutputStream.write(bytes,0,i);
  27. }
  28. }catch (IOException e){
  29. }finally {
  30. closeQuilty(ins);
  31. closeQuilty(fileOutputStream);
  32. }
  33. Map fileInfo= Maps.newHashMap();
  34. fileInfo.put("id", UUID.randomUUID().toString());
  35. fileInfo.put("url",targetFile.getPath());
  36. fileInfo.put("original_name",targetFile.getName());
  37. uploadFiles.add(fileInfo);
  38. }
  39. RestMessage rm=new RestMessage();
  40. rm.setData(uploadFiles);
  41. return rm;
  42. }

關于多文件上傳,設置allowMultiple=true即可,在UI界面端,按住Ctrl鍵即可多選文件.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號