spring mvc upload file

spring 封装了文件上传功能,使用spring mvc上传文件需要完成下面的工作:

1. 配置MultipartFileResolver

    在spring容器中注入MultipartFileResolver bean

   

 
        
        
        
 

 

 

应用该功能需要apche的commons-fileupload和commons-io依赖,因为它们提供底层api,spring是对它们的一种封装

 

2. jsp文件创建表单

 

 

上传歌曲:

 

 

文件的提交有其它方式,比如ajax或jquery的上传插件,这里只做示例

 

3. controller中文件上传处理

 

 

 

@Controller
public class UploadController {
    @Autowired
    MultipartResolver resolver;
   @RequestMapping(value="/member/{uid}/weeksong/upload",method = RequestMethod.POST)
   @ResponseBody
   public String upload(@PathVariable long uid,HttpSession session,HttpServletRequest request){
        String result="ok";
        if(resolver.isMultipart(request)){
                MultipartHttpServletRequest multipartRequest=resolver.resolveMultipart(request);
                MultipartFile file=multipartRequest.getFile("file");//此处文件名字‘file’要于表单中提交的一致
                String description=multipartRequest.getParameter("description");
                //处理file....
            }
        }else{
            result="type error";
        }
        return result;
    }
}

 

接收文件的方法中有另一种方式: 

@RequestMapping(value="/member/{uid}/weeksong/upload",method = RequestMethod.POST)
@ResponseBody
public String upload(@PathVariable long uid,HttpSession session,@RequestParam("file")MultipartFile file,@RequestParam String description){
//handle file...
}

直接将上传的文件变量的形式封装到一个MultipartFile类型的对象file中,这时出现错误:java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured? 具体原因还要研究一下

 

 

 

你可能感兴趣的:(spring,upload,file,Web,java)