先附上图片上传的代码
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();这边获取的集合将为空。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!
网友评论