詳解SpringMVC實(shí)現(xiàn)圖片上傳以及該注意的小細(xì)節(jié)
更新時(shí)間:2017年02月28日 09:39:34 作者:JustCode
本篇文章主要介紹了詳解SpringMVC實(shí)現(xiàn)圖片上傳以及該注意的小細(xì)節(jié),具有一定的參考價(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的方式實(shí)現(xiàn)
@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 {
// 將當(dāng)前上下文初始化給CommonsMultipartResolver
CommonsMultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 檢查form中是否有enctype="multipart/form-data"
if (resolver.isMultipart(request)) {
// 強(qiáng)制轉(zhuǎn)化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>
功能的實(shí)現(xiàn)其實(shí)很簡(jiǎn)單,但是對(duì)于初學(xué)者還是需要注意如下幾個(gè)點(diǎn)
- form上的enctype="multipart/form-data"不能忘記。
- <input type="file" onchange="submitUpload()" id="input-image" name="input-image"> 的name標(biāo)簽可以隨便取名,但是不能忽略,否則Iterator<String> iterable = req.getFileNames();這邊獲取的集合將為空。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud項(xiàng)目的log4j2漏洞解決方案詳解流程
很多小伙伴因?yàn)長(zhǎng)og4j2的驚爆0Day漏洞一時(shí)束手無(wú)策,這里提供最終解決方案可以進(jìn)行一個(gè)版本號(hào)的升級(jí),感興趣的朋友來看看吧2022-04-04
詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案
這篇文章主要介紹了詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
面試官:Java中new Object()到底占用幾個(gè)字節(jié)
這篇文章主要介紹了面試官:Java中new Object()到底占用幾個(gè)字節(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02

