jsp + springMVC文件上传

来源:互联网 发布:库里技术特点知乎 编辑:程序博客网 时间:2024/05/20 14:18

  • 前台jsp
<form:form id="inputForm" modelAttribute="contract" action="${ctx}/basicmana/contract/upload" method="post" enctype="multipart/form-data" class="form-horizontal">        <form:hidden path="contractId"/>        <sys:message content="${message}"/>        <table class="table table-bordered  table-condensed dataTables-example dataTable no-footer">           <tbody>              <tr>                 <td  class="width-15 active">  <label class="pull-right">合同名称:</label></td>                 <td class="width-35" ><form:input path="contractName" htmlEscape="false" maxlength="50" class="form-control required"/></td>              </tr>                <tr>                 <td  class="width-15 active">  <label class="pull-right">合同名称文件:</label></td>                 <td class="width-35" ><form:input path="" type="file" multiple="multiple" name = "files" htmlEscape="false" maxlength="50" class="form-control required"/></td>              </tr>           </tbody>           </table></form:form>

form要加上enctype=”multipart/form-data” 否则后台MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request转换会出错org.apache.shiro.web.servlet.ShiroHttpServletRequest cannot be cast to org.springframwork.web.mult..;
文件input输入框要有name属性,如name = “files”,否则multiRequest.getFileNames()无法获取到文件名

  • 后台spring MVC代码
@RequestMapping(value = "upload")    public String upload(Contract contract,HttpServletRequest request,            HttpServletResponse response, RedirectAttributes redirectAttributes){        String url = request.getServletContext().getRealPath("/") + "upload"; //获取webapps下web工程下upload的url        File mkdirs = new File(url); //获取upload        if(!mkdirs.exists()){   //不存在则创建            mkdirs.mkdirs();        }        try {            final String encoding = System.getProperty("file.encoding");            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;            List<MultipartFile> files = multiRequest.getFiles("files");//          Iterator<String> fileNames = multiRequest.getFileNames();//          while(fileNames.hasNext()){//              CommonsMultipartFile file = (CommonsMultipartFile) multiRequest.getFile(fileNames.next());//              String fileName = file.getOriginalFilename();//              String suffix = fileName.substring(fileName.lastIndexOf("."));//              fileName = java.net.URLDecoder.decode(fileName,"UTF-8");//              String saveName = String.valueOf(new Date().getTime()) + suffix;//              String filePath = url + File.separator + saveName;////              String EcodefilePath = new String(filePath.getBytes("GBK"), encoding);//                File f = new File(EcodefilePath);//                FileCopyUtils.copy(file.getBytes(), f);////          }            for(MultipartFile file : files){                String fileName = file.getOriginalFilename();                String suffix = fileName.substring(fileName.lastIndexOf("."));                fileName = java.net.URLDecoder.decode(fileName,"UTF-8");                String saveName = String.valueOf(new Date().getTime()) + suffix;                String filePath = url + File.separator + saveName;                String EcodefilePath = new String(filePath.getBytes("GBK"), encoding);                File f = new File(EcodefilePath);                FileCopyUtils.copy(file.getBytes(), f);            }            addMessage(redirectAttributes, "上传成功!");        } catch (Exception e) {            addMessage(redirectAttributes, "上传失败! 失败信息" + e.getMessage());            e.printStackTrace();        }        return "redirect:" + adminPath + "/basicmana/contract/list;    }
0 0
原创粉丝点击