您的位置:首页 > 编程语言 > Java开发

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

2017-05-26 16:23 435 查看
上篇虽然可以实现上传多个文件,但是没有实现上传多文件的同时上传表单其他信息 利用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";

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring mvc