完整SpringMVC上传图片组件及保存图片地址到数据库

在阅读网上众多资源后,发现SpringMVC上传的资料非常杂乱,没有一个能解决问题。

今天自己实践了一次,把经验分享给大家。

本人也是菜鸟,还请大神多多指点.......

1.SpringMVC使用的是commons-fileupload实现文件上传

所以要引入commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar。这两个jar包是必要的。

2.在applicationContext.xml中配置multipartResolver


            
           
       
                
   

3.在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容

/**
     * 上传头像接口
     *
     * @param userPerson
     * @return
     */

    @RequestMapping(value = "/upload",method = RequestMethod.POST)
    @ResponseBody
    public String fileUpload(
            @RequestParam(value = "userId", required = true) Long userId,
            @RequestParam("file") MultipartFile file,
            HttpServletRequest request) {
        ReturnData returnData = new ReturnData();
         if (!file.isEmpty()) {  
                try {  
                    if(userId!=null){
                    UserPerson userperson = baseService.getById(UserPerson.class, userId);
                    // 文件保存路径  
                    String filePath = request.getSession().getServletContext().getRealPath("/") + "resources/img/user/"  
                            + file.getOriginalFilename();  
                    // 转存文件  
                    file.transferTo(new File(filePath));  
                      //上传的文件名
                    String filename=file.getOriginalFilename();
                     //文件的扩张名
                    String extensionName = filename.substring(filename.lastIndexOf(".") + 1);
                    //得到新的文件名
                    String newFileName = "resources/img/user/"+String.valueOf(userperson.getId())+"."+extensionName;
                    userperson.setImageUrl(newFileName);
                    baseService.update(userperson);

                    }
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
                
            }  
         return Jacksons.me().readAsString(returnData);//这是返回的是一个字符串,使用到Jacksons.me()组件
        }
这个是我用来实现头像上传的并改名存到数据库中

4.编写前台表单。注意enctype="multipart/form-data"以及

  

 
    选择文件:  
       

就这些,自己理解下应该没什么问题....希望对大家有用

你可能感兴趣的:(java小记)