springmvc 上傳圖片
阿新 • • 發佈:2018-06-02
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
- 方法的第二個參數UploadedImageFile 中已經註入好了 image
- 通過 RandomStringUtils.randomAlphanumeric(10);獲取一個隨機文件名。 因為用戶可能上傳相同文件名的文件,為了不覆蓋原來的文件,通過隨機文件名的辦法來規避
- 根據request.getServletContext().getRealPath 獲取到webContent目錄下的image目錄,用於存放上傳後的文件。
- 調用file.getImage().transferTo(newFile); 復制文件
- 把生成的隨機文件名提交給視圖,用於後續的顯示
springmvc 上傳圖片