ssm框架Springmvc文件上傳實現(xiàn)代碼詳解
一、上傳:
1)編寫前臺文件上傳表單。Method必須為post,enctype為mutipart/form-data
<body> <%--文件上傳 1)method必須指定為post 2)enctype必須指定為multipart/form-data --%> <h1>頭像上傳</h1> <form action="${pageContext.request.contextPath}/admin/headpic" method="post" enctype="multipart/form-data"> 選擇頭像:<input type="file" name="headpic"/> <%-- ${param.屬性值}==request.getParameter(屬性值)--%> <input type="text" name="id" value="${param.id}"> <input type="submit" value="上傳"/> </form> </body>
2)編寫控制層代碼,獲取上傳的文件數(shù)據(jù),并保存MultipartFile;
//MultipartFile:用來接收上傳的文件,參數(shù)名與input的name一直 //@SessionAttribute("admin"):獲取session域中的值 //@RequestParam(required = false):指定對應(yīng)的參數(shù)可以為空,不是必須有值 @RequestMapping("/headpic") public String headPic(MultipartFile headpic,@RequestParam(required = false) Admin admin,Integer id) throws IOException { String filename = headpic.getOriginalFilename(); System.out.println("上傳的文件名:"+filename); File file=new File("E:/headpic/"+filename); if (!file.getParentFile().exists()){ file.getParentFile().mkdirs();//如果父目錄不存在,創(chuàng)建該目錄 } //保存文件,將上傳的文件內(nèi)容寫入file headpic.transferTo(file); admin=new Admin(id); //將頭像訪問路徑保存到對象中 admin.setHeadpic("/head/"+filename); //更新用戶頭像信息 adminService.updateHeadPic(admin); return "redirect:list"; }
3)在springmvc配置文件中配置文件上傳配置項。配置multipartResolver;
<!--配置文件上傳--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--設(shè)置文件編碼格式--> <property name="defaultEncoding" value="UTF-8"/> <!--設(shè)置最大上傳大小--> <property name="maxUploadSize" value="10240000" /> </bean> <!-- 資源映射,將請求地址映射到某個目錄或具體的磁盤路徑 mapping:配置請求地址; location:配置文件路徑 請求地址:/head/logo.png==>E:/headpic/logo.png --> <mvc:resources mapping="/head/**" location="file:E:/headpic/"></mvc:resources> <!-- 請求地址為/headimg/logo.png==>/WEB-INF/img/logo.png--> <mvc:resources mapping="/headimg/**" location="/WEB-INF/img/"></mvc:resources>
二、下載:
1) 獲取到下載文件的路徑;
2) 讀取文件內(nèi)容到字節(jié)數(shù)組;
3) 返回字節(jié)數(shù)組,并聲明返回類型為stream,設(shè)置附件名稱;
@GetMapping("/headPicDownload") public ResponseEntity<byte[]> headPicDownload(String filename) throws IOException { //1、定位到文件地址 File file=new File("E:/headpic/"+filename); //2、讀取文件內(nèi)容 byte[] bytes= FileUtils.readFileToByteArray(file); //3、設(shè)置http響應(yīng)頭 HttpHeaders headers = new HttpHeaders(); //設(shè)置ContentType為stream headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //4、設(shè)置以附件形式打開 headers.setContentDispositionFormData("attachment",filename); // 內(nèi)容 頭部信息 http狀態(tài)碼 return new ResponseEntity<byte[]>(bytes,headers, HttpStatus.CREATED); }
<td> <img style="width: 25px;height: 25px;border-radius: 50%;" src="${pageContext.request.contextPath}${admin.headpic}"/> <a href="${pageContext.request.contextPath}/admin/headPicDownload?filename=${fn:replace(admin.headpic," rel="external nofollow" /head/","" )}">下載</a> </td>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- java開發(fā)SSM框架具有rest風(fēng)格的SpringMVC
- SpringMVC 整合SSM框架詳解
- Spring+SpringMVC+MyBatis整合實戰(zhàn)(SSM框架)
- SSM框架整合之Spring+SpringMVC+MyBatis實踐步驟
- 如何基于ssm框架實現(xiàn)springmvc攔截器
- 使用IDEA搭建SSM框架的詳細(xì)教程(spring + springMVC +MyBatis)
- Java SSM框架(Spring+SpringMVC+MyBatis)搭建過程
- 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程
- Spring MVC 擴展和 SSM 框架整合步驟詳解
相關(guān)文章
Java實現(xiàn)Excel批量導(dǎo)入數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)Excel批量導(dǎo)入數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08在ChatGPT的API中支持多輪對話的實現(xiàn)方法
ChatGPT是由OpenAI研發(fā)的一種預(yù)訓(xùn)練語言模型,只能在OpenAI平臺上進行訓(xùn)練,目前并不對外開放訓(xùn)練接口,這篇文章主要介紹了在ChatGPT的API中支持多輪對話的實現(xiàn)方法,需要的朋友可以參考下2023-02-02Springboot如何統(tǒng)一處理Filter異常
這篇文章主要介紹了Springboot如何統(tǒng)一處理Filter異常問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12eclipse修改jvm參數(shù)調(diào)優(yōu)方法(2種)
本篇文章主要介紹了eclipse修改jvm參數(shù)調(diào)優(yōu)方法(2種),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02Java日期格式化的實現(xiàn)(@JsonFormat和@JSONField)
本文主要介紹了Java日期格式化的實現(xiàn),主要介紹了@JsonFormat和@JSONField兩種方式,具有一定的參考價值,感興趣的可以了解一下2024-05-05Spring中的@CrossOrigin注冊處理方法源碼解析
這篇文章主要介紹了Spring中的@CrossOrigin注冊處理方法源碼解析,@CrossOrigin是基于@RequestMapping,@RequestMapping注釋方法掃描注冊的起點是equestMappingHandlerMapping.afterPropertiesSet(),需要的朋友可以參考下2023-12-12SpringCloud手寫Ribbon實現(xiàn)負(fù)載均衡
這篇文章主要介紹了SpringCloud手寫Ribbon實現(xiàn)負(fù)載均衡的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01