SSM_SpringMVC+Spring+Mybatis+maven文件上传-单文件+多文件

第一步:

在maven工程的pom.xml文件中添加依赖,

<!--文件上传-->
<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.4</version>
</dependency>
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

第二步:配置web.xml和SpringMVC文件

配置web.xml文件就不多说了,和正常的ssm项目配置一样,无需更改

配置springMVC的文件,需要在配置文件中申明  CommonsMultipartResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <property name="maxUploadSize" value="5400000"></property>   //配置最大上传文件大小
    <property name="defaultEncoding" value="UTF-8"></property>   //配置编码格式
</bean>

第三部:开始编写jsp表单文件---(单文件上传)

方式一:

<form action="upload/oneUpload"  method="post" enctype="multipart/form-data">  

           <input type="file" name="file" />   

           <input type="submit" value="上 传" />  

       </form>  

        <h5>上传结果:</h5>  

    <img alt="暂无图片" src="${fileUrl}" /> 

 第四部:开始编写Controller文件

@RequestMapping("/oneUpload")  

   public String oneFileUpload(  

         @RequestParam("file") CommonsMultipartFile file,  

          HttpServletRequest request, ModelMap model) {    

     // 获得原始文件名  

    String fileName = file.getOriginalFilename();  

      System.out.println("原始文件名:" + fileName);  

       // 新文件名  

       String newFileName = UUID.randomUUID() + fileName;   

        // 获得项目的路径  

        ServletContext sc = request.getSession().getServletContext();  

        // 上传位置  

        String path = sc.getRealPath("/img") + "/"; // 设定文件保存的目录    

        File f = new File(path);  

        if (!f.exists())  

            f.mkdirs();  

        if (!file.isEmpty()) {  

            try {  

               FileOutputStream fos = new FileOutputStream(path + newFileName);  

                InputStream in = file.getInputStream();  

                int b;  

               while ((b = in.read()) != -1) {  

                    fos.write(b);  

                }  

               fos.close();  

              in.close();  

            } catch (Exception e) {  

               e.printStackTrace();  

            }  

        }    

        System.out.println("上传图片到:" + path + newFileName);  

        // 保存文件地址,用于JSP页面回显  

        model.addAttribute("fileUrl", path + newFileName);  

        return "fileUpload";  

    }  

方式二:

@RequestMapping("/oneUpload2")  

    public String oneFileUpload2(HttpServletRequest request,  

            HttpServletResponse response) throws Exception {  

        CommonsMultipartResolver cmr = new CommonsMultipartResolver(  

                request.getServletContext());  

        if (cmr.isMultipart(request)) {  

            MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) (request);  

            Iterator<String> files = mRequest.getFileNames();  

            while (files.hasNext()) {  

                MultipartFile mFile = mRequest.getFile(files.next());  

                if (mFile != null) {  

                    String fileName = UUID.randomUUID()  

                            + mFile.getOriginalFilename();  

                    String path = "d:/upload/" + fileName;  

                    File localFile = new File(path);  

                    mFile.transferTo(localFile);  

                    request.setAttribute("fileUrl", path);  

                }  

            }  

        }  

        return "fileUpload";  

    }  

}  

好像还有种利用文件流的方式,记不清了,呵呵

多文件传输

jsp中表单文件:

<form action="upload/moreUpload" method="post"  

            enctype="multipart/form-data">  

            <input type="file" name="file" /><br /> <input type="file"  

                name="file" /><br /> <input type="file" name="file" /><br /> <input  

                type="submit" value="上 传" />  

        </form>  

        <h5>上传结果:</h5>    

        <c:forEach items="${fileList}" var="imagename">  

                <img alt="暂无图片" src="${imagename}" /> <br/>  

       </c:forEach>

 

Controller中的代码实现

@RequestMapping("/moreUpload")  

public String threeFileUpload(  

        @RequestParam("file") CommonsMultipartFile files[],  

        HttpServletRequest request, ModelMap model) {    

    List<String> list = new ArrayList<String>();  

    // 获得项目的路径  

    ServletContext sc = request.getSession().getServletContext();  

    // 上传位置  

    String path = sc.getRealPath("/img") + "/"; // 设定文件保存的目录  

    File f = new File(path);  

    if (!f.exists())  

        f.mkdirs();    

    for (int i = 0; i < files.length; i++) {  

        // 获得原始文件名  

        String fileName = files[i].getOriginalFilename();  

        System.out.println("原始文件名:" + fileName);  

       // 新文件名  

        String newFileName = UUID.randomUUID() + fileName;  

        if (!files[i].isEmpty()) {  

            try {  

                FileOutputStream fos = new FileOutputStream(path  

                        + newFileName);  

                InputStream in = files[i].getInputStream();  

                int b = 0;  

                while ((b = in.read()) != -1) {  

                   fos.write(b);  

                }  

                fos.close();  

                in.close();  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

        }  

        System.out.println("上传图片到:" + path + newFileName);  

        list.add(path + newFileName);    

    }  

    // 保存文件地址,用于JSP页面回显  

    model.addAttribute("fileList", list);  

    return "fileUpload2";    

}  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值