1. 程式人生 > >springmvc 上傳圖片

springmvc 上傳圖片

class illegal plugin pin type 顯示 common toc numeric

package controller;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.xwork.RandomStringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import pojo.UploadedImageFile;

@Controller
public class UploadController {
    
    @RequestMapping("/uploadImage")
    
    //方法的第二個參數UploadedImageFile 中已經註入好了 image
    public ModelAndView upload(HttpServletRequest request,
            UploadedImageFile file) throws IllegalStateException, IOException {
        
        //通過 RandomStringUtils.randomAlphanumeric(10);獲取一個隨機文件名。 因為用戶可能上傳相同文件名的文件,為了不覆蓋原來的文件,通過隨機文件名的辦法來規避
        String name = RandomStringUtils.randomAlphanumeric(10);
        String newFileName = name + ".jpg";
        
        //request.getServletContext().getRealPath("/image") 
                //根據request.getServletContext().getRealPath 獲取到web目錄下的image目錄,用於存放上傳後的文件。
        File newFile = new File(request.getServletContext().getRealPath(
                "/image"), newFileName);  
        
        
        
        System.out.println(newFile);
        System.out.println(newFile.getParentFile());
        newFile.getParentFile().mkdirs();
        
        //調用file.getImage().transferTo(newFile); 復制文件
        file.getImage().transferTo(newFile);

        ModelAndView mav = new ModelAndView("showUploadedFile");
        mav.addObject("imageName", newFileName);
        return mav;
    }
}

上面2個輸出語句的打印如下

信息: Starting ProtocolHandler ["http-bio-8080"]
六月 01, 2018 5:12:52 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
六月 01, 2018 5:12:52 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 4227 ms
C:\Users\chen\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\springmvc\image\x6Cf5WOFyZ.jpg
C:\Users\chen\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\springmvc\image

新建類UploadController 作為上傳控制器
準備方法upload 映射上傳路徑/uploadImage

  1. 方法的第二個參數UploadedImageFile 中已經註入好了 image
  2. 通過 RandomStringUtils.randomAlphanumeric(10);獲取一個隨機文件名。 因為用戶可能上傳相同文件名的文件,為了不覆蓋原來的文件,通過隨機文件名的辦法來規避
  3. 根據request.getServletContext().getRealPath 獲取到webContent目錄下的image目錄,用於存放上傳後的文件。
  4. 調用file.getImage().transferTo(newFile); 復制文件
  5. 把生成的隨機文件名提交給視圖,用於後續的顯示

技術分享圖片

技術分享圖片

技術分享圖片

springmvc 上傳圖片