SpringMVC框架下的文件上传(多文件)

步骤:
**1.**jar包(除了Spring框架包,好需要)
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
2.编写文件上传页面,即jsp页面:

    <form action="..." method="post" enctype="multipart/form-data">
        <input type="file" name="phono1">
        <input  type ="submit" values="点击提交">
    </form>
    注意:必须是post方法,enctype也必须要

3.根据Form的action属性值,编写Controller(使用注解)

@Controller
@RequestMapping("user")
public class FileUploadController {

    @RequestMapping("uploadoneFile")
    public String fileUpload(@RequestParam MultipartFile phono1){
        ....
        return "fileupload-ok";
}
    注意:1).这访问路径是...../user/uploadoneFile
        2).MultipartFile 对象的phono1就是文件对象,可以使用该类的方法进行处理

3+.将文件上传到服务器upload文件夹下

@RequestMapping("uploadoneFile")
public String fileOneUpload(@RequestParam MultipartFile phono1,HttpServletRequest requset){
    //获得绝对路径
    String realPath = requset.getSession().getServletContext().getRealPath("upload");
    try {
        FileUtils.copyInputStreamToFile(phono1.getInputStream(), new File(realPath,phono1.getOriginalFilename()));
    } catch (IOException e) {
        e.printStackTrace();
    }
    return "fileupload-ok";
}

3++.多文件上传;不多说,迭代MultipartFile类对象依次上传

4.重要!!配置CommonsMultipartResolver的bean对象,否则MultipartFile类无效,同时springmvc对文件上传的支持工具类必须建立在导入的两个jar包之上,否则无效

<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver" id="multipartResolver">
    <property name="defaultEncoding" value="UTF-8"></property>
    <property name="maxInMemorySize" value="10240000"></property>
</bean>
    注意:配置具体属性可以自己修改,但一定要配置该bean类

5.异常捕获(页面跳转)

<!-- 异常处理(捕获异常)-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
    <!-- 给其map属性 添加不同的异常对应不同的处理页面 -->
    <property name="exceptionMappings">
        <props>
            <!--  key是错误类型 fileupload-error是错误跳转页面  -->
            <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">fileupload-error</prop>
        </props>
    </property>
</bean>

“`

猜你喜欢

转载自blog.csdn.net/tomsmith001/article/details/49432627