Spring MVC实现文件上传以及遇到的问题

我们默认你搭好了Spring MVC,这里不在赘述Spring MVC的搭建.

View

这里需要注意的是enctype属性的值和post请求.

Controller

/**
 * Author: Wfion
 * Date: 2017-11-9
 */
@Controller
public class UploadController {
    /*
     * 上传
     */
    @RequestMapping(value = "upload",method = RequestMethod.POST)
    public String upload(@RequestParam(value = "file",required = false)MultipartFile file, HttpServletRequest request){
        /*
         * 1.获取文件名称
         */
        //文件真实名称
        String fn=file.getOriginalFilename();
        System.out.println("文件名称:"+fn);
        /**
         * 2.获取upload文件夹位置
         */
        String path=request.getServletContext().getRealPath("/upload");
        /**
         * 3.通过流上传文件
         */
        File targetFile=new File(path+"/"+fn);
        try {
            file.transferTo(targetFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "uploadSuccess.jsp";
    }
}

MultipartFile:
getOriginalFilename() 获取上传文件的原名
transferTo() 将上传的文件存到服务器上(不执行此方法上传的文件会存到缓存区)

Configuration

SpringMVC配置文件,随着tomcat容器启动时候加载的文件,如果tomcat启动时候没有扫描本文件,那么就会出现找不到bean的错误

注意:这个解析器的id必须写为multipartResolver,因为博主乱起过,出了400错误.类似的还有localeResolver,themeResolver,viewResolver等

详见:DispatcherServlet的源码前9个常量

可能导致的400报错

spring核心包缺失或者以下jar包缺失


        commons-io
        commons-io
        1.3.2
    
    
        commons-fileupload
        commons-fileupload
        1.3.1
Last modification:June 23rd, 2019 at 10:27 am
如果觉得我的文章对你有用,请随意赞赏

Leave a Comment