完整SpringMVC上傳圖片組件及保存圖片地址到數據庫

在閱讀網上衆多資源後,發現SpringMVC上傳的資料非常雜亂,沒有一個能解決問題。

今天自己實踐了一次,把經驗分享給大家。

本人也是菜鳥,還請大神多多指點.......

1.SpringMVC使用的是commons-fileupload實現文件上傳

所以要引入commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar。這兩個jar包是必要的。

2.在applicationContext.xml中配置multipartResolver

<!-- 下載組件 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        
        <property name="defaultEncoding" value="utf-8"></property>   
        <property name="maxUploadSize" value="2048000"></property>
        <property name="uploadTempDir" value="resources/img/user"></property>        
    </bean>

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<UserPerson> returnData = new ReturnData<UserPerson>();
         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"以及<input type="file" name="****"/>

   <form action="<%=basePath%>userPerson/upload" method="post" enctype="multipart/form-data"> 
    選擇文件:<input type="file" name="file">  
    <input type="submit" value="提交">   
</form>
就這些,自己理解下應該沒什麼問題....希望對大家有用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章