使用multipart请求处理文件上传
来源:互联网 发布:淘宝店刷信誉可靠吗 编辑:程序博客网 时间:2024/06/08 03:52
转载 : http://blog.sina.com.cn/s/blog_8fb83eec0100wm1r.html
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——Spring MVC其中的一个优势。Spring通过对Servlet API的HttpServletRequest接口进行扩展,使其能够很好地处理文件上传。扩展后的接口名为org.springframework.web.multipart.MultipartHttpServletRequ
清单7-31
interface MultipartHttpServletRequ
public MultipartFile getFile(String name);
public Map getFileMap();
public Iterator getFileNames();
}
如清单所示,MultipartHttpServletRequ
7.10.1
实际上只要发现一个multipart请求,就表明在控制器实例中存在一个实现Multipart HttpServletRequest接口的request对象。我们可以通过清单7-31所示的方法来访问multipart请求中的上传文件,不过在处理上传文件之前,先来看一下上传表单的内容,如清单7-32所示。
清单7-32
<form action="upload" enctype="multipart/form-data">
<input type="file" name="myFile" />
<input type="submit" value="Upload! " />
</form>
粗体显示的是需要注意的部分,实际上一个上传表单只需要满足如下两点。
l
l
在前面的示例中,<input>标签中属性type的值为file,且name属性的值为myFile,之所以需要name属性值,是因为在使用接口MultipartHttpServletRequ
清单7-33
def upload = {
def file = request.getFile('myFile')
// 处理该文件
}
注意getFile方法不会返回一个java.io.File的实例,而是返回org.springframework.web. multipart.MultipartFile的一个实例,关于org.springframework.web.multipart.MultipartFile的详细信息,请参考清单7-34。如果在请求中没有找到文件则getFile方法返回null。
清单7-34
interface MultipartFile {
public byte[] getBytes();
public String getContentType();
public java.io.InputStream getInputStream();
public String getName();
public String getOriginalFilename();
public long getSize();
public boolean isEmpty();
public void transferTo(java.io.File dest);
}
在MultipartFile接口中定义了如下很多有用的方法。
l
l
l
l
l
例如,如果上传的文件不为空并且大小不小于1024字节,那么可以按照清单7-35中的代码来实现。
清单7-35
def upload = {
def file = request.getFile('myFile')
if(file && !file.empty && file.size < 1024) {
file.transferTo( new java.io.File( "/local/server/path/${file.name}" ) )
}
}
直接使用MultipartHttpServletRequ
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- 使用multipart请求处理文件上传
- form表单上传文件使用multipart请求处理
- 使用multipart/form-data上传文件
- 使用multipart/form-data上传文件
- multipart/form-data请求与文件上传的细节
- SpringMVC multipart文件上传
- SpringMVC multipart(文件上传)
- SpringMVC multipart文件上传
- SpringMVC multipart文件上传
- 如何使用multipart/form-data格式上传文件
- 如何使用multipart/form-data格式上传文件
- 如何使用multipart/form-data格式上传文件
- udp_server
- Codeforces 371E Subway Innovation【思维+前缀和】
- Linux安装telnet
- 详述用html5 canvas实现的类似于天猫的购物进度反馈/订单跟踪
- python学习(15)——常见错误集锦
- 使用multipart请求处理文件上传
- 在64位ubuntu上编译kitkat4.4时遇到HashSet_jni.h错误导致编译中止的问题
- 【RabbitMQ】生产者,消费者,信道,队列,交换器和绑定
- 关于xmpp协议的即时通讯分析
- 基于注解的AOP实现
- 交换排序——冒泡排序
- POJ 3281 Dining
- MySQL预编译模糊查询出现错误,最后自己给解决了, 希望对大家有所帮助
- 权限由shiro控制后 如何在 web.xml中拦截404 500等等异常