资讯专栏INFORMATION COLUMN

使用Servlet技术上传文件

asce1885 / 2490人阅读

摘要:技术现在提供开箱即用的上传文件方法,所以任何实现规范的容器都能通过对象解析请求和生成有效的附件。用来在处理时存储临时文件或者是文件大小超过设置的值。默认是允许上传的最大文件大小,单位是。如果上传的文件超过限制,容器将抛出异常。

支持文件上传是web程序最基本和常见的需求。在早期的servlet规范中,实现文件上传需要使用第三方库或者复杂的输入处理。针对此问题,servlet现在以通用和可移植的方式帮助提供了一个可行的解决方案。servlet技术现在提供开箱即用的上传文件方法,所以任何实现规范的web容器都能通过HttpServletRequest 对象解析multipart请求和生成有效的mime附件。
一个新的注解,javax.servlet.annotation.MultipartConfig,用来表明需要multipart/form-data类型请求的定义上。使用@MultipartConfig注解的servlet都可以通过调用 request.getPart(String name)或request.getParts()方法获取一个给定的multipart/form-data请求中的Part构件。

@MultipartConfig注解

@MultipartConfig注解提供下面这些可选的属性:

location 操作系统上的一个绝对路径。location属性不支持基于web上下文的相对路径。location用来在处理Part时存储临时文件或者是文件大小超过fileSizeThreshold设置的值。默认location是“”

fileSizeThreshold 存储在硬盘上的临时文件的大小。默认是0byte

MaxFileSize 允许上传的最大文件大小,单位是byte。如果上传的文件超过限制,web容器将抛出异常(IllegalStateException)。默认设置是不限制大小。

maxRequestSize 一个 multipart/form-data请求能携带的最大字节数。

例如,@MultiPartConfig可以如下构造:

@MultipartConfig(location="/tmp", fileSizeThreshold=1024*1024,
    maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)

代替使用 @MultipartConfig注解在你的upload servlet中硬编码这些属性,需要在web.xml中作为一个子节点添加下面的节点:


    /tmp
    20848820
    418018841
    1048576
getParts和getPart方法

servlet规范定义了HttpServletRequest的两个附加方法:

Collection getParts()

Part getPart(String name)

request.getParts()方法返回所有Prat集合。如果你有超过一个文件类型的输入,将返回多个Part对象。因为所有Part对象都被命名, getPart(String name)方法用来访问特定的Part对象。另外,getParts()返回Iterable可以用来遍历所有Part。
javax.servlet.http.Part是简单的,提供每个Part的自省方法。方法列表:

获取Part的名称、大小、类型等

查询随Part提交的Header信息

删除一个Part

输出Part到磁盘

例如,Part 接口提供write(String filename) 方法以特定名称写入到文件中。文件可以使用@MultipartConfig注解定义的location直接保存,在fileupload示例中,location是由表达中的属性定义的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74230.html

相关文章

  • Java3y文章目录导航

    摘要:前言由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 前言 由于写的文章已经是有点多了,为了自己和大家的检索方便,于是我就做了这么一个博客导航。 由于更新比较频繁,因此隔一段时间才会更新目录导航哦~想要获取最新原创的技术文章欢迎关注我的公众号:Java3y Java3y文章目录导航 Java基础 泛型就这么简单 注解就这么简单 Druid数据库连接池...

    KevinYan 评论0 收藏0
  • JAVA EE 6官方教程-17 Java Servlet

    Java Servlet技术使用请求-响应编程模型提供动态的面向用户的web应用程序。 这里将讨论一下主题: 什么是Servlet? Servlet的生命周期 信息共享 创建并初始化一个Servlet 编写Servlet方法 请求和响应过滤器 调用其他Web资源 访问Web上下文 维持客户端状态 不可变Servlet(?) 使用Servlet技术上传文件 异步请求处理 NIO 协议升级处理 m...

    Zoom 评论0 收藏0
  • Spring之旅第十站:MVC配置、上传文件、异常处理、跨重定向请求、为控制器添加通知

    摘要:依赖于对请求的支持。使用解析兼容的没有构造器参数,也没有要设置的参数,这样,在应用上下文中,将其声明为就会非常简单。默认是没有限制的整个请求的容量。 Spring MVC 高级的技术 本章内容: Spring MVC配置的替代方案 处理文件上传 在控制器中处理异常 使用flash属性 稍等还没结束 说明 如果你有幸能看到。后面的章节暂时不更新了,改变学习方式了。重要理解思想,这本书...

    leanote 评论0 收藏0
  • 7.2、使用基于 Servlet 3.0 的文件上传

    摘要:本文示例见这个项目的分支下的项目这个项目是为本文单独建立的。的内置支持用于处理应用程序中的文件上传。提供了一个的实现,使用了的和一些其他的东西,用于对的请求的解析。首先,创建一个带有的表单,这样用户就可以通过这个表单上传文件了。   本文示例见这个项目的 upload 分支下的项目(这个项目是为本文单独建立的)。   WARNING:本文中有一部分直接把英文原文搬过来了,我的翻译能力实...

    KevinYan 评论0 收藏0
  • servlet上传下载

    摘要:一添加项目依赖二上传上传文件存储目录上传配置上传文件最大值检测是否为多媒体上传如果不是则停止表单必须包含配置上传参数设置最大文件上传值中文处理构造临时路径来存储上传的文件这个路径相对当前应用的目录如果目录不存在则创建解析请求的内容 一、添加项目依赖(gradle) dependencies { compile group: javax.servlet, name: javax....

    xuweijian 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<