图片上传普遍的实际开发中运用场景很广,知识点不是很难但需要注意的细节很多,往往可能因为一个细节的疏忽而导致整个上传功能不能很好的实现。为方便日常开发,特记下一个完整的实现案例以供参考。本文使用的开发工具为IDEA。
(1)前端页面
<form ... enctype="multipart/form-data"> <%--修改提交的表单数据的编码方式--%>
<tr> <td>商品图片</td> <td> <c:if test="${itemsCustom.pic !=null}"> <%--/picll为tomcat的server.xml中配置的虚拟目录--%> <img class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="/picll/${itemsCustom.pic}" width=100 height=100/> <br/> </c:if> <input type="file" name="items_pic"/> </td> </tr>
(2)后台Controller
//获取原始名称 String originalFilename = items_pic.getOriginalFilename(); System.out.println("orginalFileName: "+originalFilename); //上传图片 if(items_pic!=null&&originalFilename!=null&&originalFilename.length()>0){ //存储图片的绝对物理路径 String pic_path = "C:\\Users\\Administrator\\Desktop\\springmvctest\\test\\src\\main\\webapp\\WEB-INF\\jsp\\items\\pic\\"; //新图片的名称 String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf(".")); //新图片 File newFile = new File(pic_path + newFileName); //将内存中的数据写入磁盘 items_pic.transferTo(newFile); //将新图片的名称写到itemsCustom对象中 itemsCustom.setPic(newFileName); }
(3)虚拟目录的配置
两种方式:
(一)使用IDEA热部署的情况下,只需要在Edit Configurations下的Deployment中添加External Source中选择图片上传的物理路径,然后在Appliaction Context中设置path名称即可。
(二)直接在tomcat服务器下的server.xml中配置。
<!--添加虚拟目录-->
<Context path="/picll" docBase="C:\Users\Administrator\Desktop\springmvctest\test\src\main\webapp\WEB-INF\jsp\items\pic" />
點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊
評(píng)論
評(píng)論
共同學(xué)習(xí),寫(xiě)下你的評(píng)論
評(píng)論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得
100積分直接送
付費(fèi)專(zhuān)欄免費(fèi)學(xué)
大額優(yōu)惠券免費(fèi)領(lǐng)