詳解SpringMVC實現圖片上傳以及該注意的小細節(jié)
更新時間:2017年02月28日 09:39:34 作者:JustCode
本篇文章主要介紹了詳解SpringMVC實現圖片上傳以及該注意的小細節(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下。
先附上圖片上傳的代碼
jsp代碼如下:
<form action="${path}/upload/uploadPic.do" method="post" enctype="multipart/form-data"> <div>  <input type="file" id="input-image" name="input-image"> <input id="input-relative-path" name="imgs" type="hidden" > <input id="input-last-path" type="hidden"> <input type="submit" value="上傳圖片"> </div> </form>
controller代碼:通過spring的方式實現
@Controller @RequestMapping("/upload") public class UploadController extends BaseController { @RequestMapping(value = "/uploadPic", method = RequestMethod.POST) @LoginCheck public void uploadPic(HttpServletRequest request, PrintWriter out, String lastRealPath) throws IOException { // 將當前上下文初始化給CommonsMultipartResolver CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); // 檢查form中是否有enctype="multipart/form-data" if (resolver.isMultipart(request)) { // 強制轉化request MultipartHttpServletRequest req = (MultipartHttpServletRequest) request; // 從表單獲取input名稱 Iterator<String> iterable = req.getFileNames(); // 存在文件 if (iterable.hasNext()) { String inputName = iterable.next(); // 獲得文件 MultipartFile mf = req.getFile(inputName); byte[] mfs = mf.getBytes(); // 定義文件名 String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()); Random random = new Random(); for (int i = 0; i < 3; i++) { fileName = fileName + random.nextInt(10); } // 獲得后綴名 String oriFileName = mf.getOriginalFilename(); String suffix = oriFileName.substring(oriFileName.lastIndexOf(".")); // 上傳圖片到本地 String localPath = "/Users/ZR/Desktop/webPro/console/src/main/webapp/image/" + fileName + suffix; mf.transferTo(new File(localPath)); // 獲取圖片的寬高 BufferedImage bufferedImage = ImageIO.read(new FileInputStream(new File(localPath))); int width = bufferedImage.getWidth(); int height = bufferedImage.getHeight(); // 獲取文件大小 long size = mf.getSize(); } } } }
spring-mvc.xml代碼:
<!-- 文件上傳的視圖解析器,id值是固定的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="1024000"/> <!-- 其他屬性 --> </bean>
功能的實現其實很簡單,但是對于初學者還是需要注意如下幾個點
- form上的enctype="multipart/form-data"不能忘記。
- <input type="file" onchange="submitUpload()" id="input-image" name="input-image"> 的name標簽可以隨便取名,但是不能忽略,否則Iterator<String> iterable = req.getFileNames();這邊獲取的集合將為空。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot實戰(zhàn):Spring如何找到對應轉換器優(yōu)雅使用枚舉參數
這篇文章主要介紹了SpringBoot實戰(zhàn)中Spring是如何找到對應轉換器優(yōu)雅的使用枚舉參數,文中附有詳細的實例代碼有需要的朋友可以參考下,希望可以有所幫助2021-08-08Mybatis foreach用法解析--對于list和array
這篇文章主要介紹了Mybatis foreach用法解析--對于list和array,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03