详解SpringMVC实现图片上传以及该注意的小细节 程序员文章站 2024-03-06 13:50:50 先附上图片上传的代码 jsp代码如下: 先附上图片上传的代码 jsp代码如下: <form action="${path}/upload/uploadpic.do" method="post" enctype="multipart/form-data"> <div> ![](${path}/mall/image/load_image.png) <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();这边获取的集合将为空。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。 上一篇: Android6.0 消息机制原理解析 下一篇: Maven本地仓库的配置以及修改默认.m2仓库位置 推荐阅读 详解SpringMVC实现图片上传以及该注意的小细节 详解SpringMVC实现图片上传以及该注意的小细节