spring mvc 实现多文件上传,且同时包含表单信息

上篇虽然可以实现上传多个文件,但是没有实现上传多文件的同时上传表单其他信息 利用MultipartFile实现

upload.jsp 内容

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>File Upload!</title>
<script type="text/javascript"
 src="<c:url value="/resources/js/jquery-1.9.1.js"/>"></script>
<script type="text/javascript">
 $(document)
   .ready(
     function() {
      $("#addFile")
        .click(
          function() {
           var fileIndex = parseInt($(
             "#addFileDiv").children().length);
           var index = fileIndex - 2;
           alert(index);
           $("#addFileDiv")
             .append(
               '<input name="multiUploadFiles['+index+']" type="file"/><br/>');
          });
     });
</script>
</head>
<body>
 <!-- multiUploadFiles -->
 <form:form action="/CensusRegisterApproveSystem/uploadFiles.action"
  modelAttribute="multiFileUploadForm" method="post"
  enctype="multipart/form-data">
  <div id="addFileDiv">
  <input type="text" name="itemname"> <br />
 <input type="text" name="description"> <br />
   <input type="file" name="multiUploadFiles[0]" /> <br />
   <input type="file" name="multiUploadFiles[1]" /><br />
  </div>
  <input type="button" id="addFile" value="添加文件" />
  <br />
  <input type="submit" value="上传" />
 </form:form>
</body>
</html>

需要创建po类MultiFileUploadForm.java 代码如下

 public class MultiFileUploadForm {
     private String itemname;
     private String description;
    
    
     public String getItemname()
    {
        return itemname;
    }
    public void setItemname(String itemname)
    {
        this.itemname = itemname;
    }
    public String getDescription()
    {
        return description;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }
    private List<MultipartFile> multiUploadFiles;
     public List<MultipartFile> getMultiUploadFiles() {
      return multiUploadFiles;
     }
     public void setMultiUploadFiles(List<MultipartFile> multiUploadFiles) {
      this.multiUploadFiles = multiUploadFiles;
     }

需要创建的controller类内容为:

@Controller
public class MultiFileUploadController {
 @RequestMapping(value = "/uploadFiles", method = RequestMethod.POST)
 public String uploadFile(
   @ModelAttribute("multiFileUploadForm") MultiFileUploadForm multiFileUploadForm,
   Model model) {
  List<String> fileNames = new ArrayList<String>();
  List<MultipartFile> requestFiles = new ArrayList<MultipartFile>();
  System.out.println(multiFileUploadForm.getItemname());
  System.out.println(multiFileUploadForm.getDescription());
  requestFiles = multiFileUploadForm.getMultiUploadFiles();
  if (null != requestFiles && requestFiles.size() > 0) {
   for (MultipartFile mf : requestFiles) {
    fileNames.add(mf.getOriginalFilename());
    try {
     mf.transferTo(new File("D:/Upload/"
       + mf.getOriginalFilename()));
    } catch (IllegalStateException e) {
     e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
   model.addAttribute("files", fileNames);
  }
  for (String file : fileNames) {
   System.out.println(file);
  }
  return "items/success";
 }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值