- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java Web 开发中文件上传方法研究与实现.doc
Java Web 开发中文件上传方法研究与实现
摘要:文件上传是Web开发中经常需要实现的功能,介绍了Java Web开发中主流的文件上传方法,包括SmartUpload和Commons FileUpload两种组件上传,以及Servlet 3.0支持的原生API文件上传。给出了三种方法实现文件上传的主要代码,并对三者在上传大文件时的效率进行了比较。
关键词:SmartUpload;Commons FileUpload;Servlet 3.0;文件上传;Java Web
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)11-0048-02
在Web应用开发中,文件上传是经常需要实现的功能,目前广为流传的方法是使用第三方的文件上传组件。具体在Java web开发领域,常用的上传组件有SmartUpload、Apache Commons FileUpload等。在最新的Servlet 3.0规范中,对文件上传提供了API的原生支持,这样就可以不再依赖任何第三方上传组件。本文将举例探讨以上三种文件上传方法的特点,最后从上传效率上给出三种方法的比较。
1 SmartUpload组件
SmartUpload是在Java Web开发中使用较多的一个文件上传下载组件,它的特点是使用非常简单,只需几行代码即可实现文件的上传下载,所以即使SmartUpload已经停止了更新,但直到今天依然是很多开发者的选择。
SmartUpload的API中主要包括SmartUpload、Files、File、Request等核心类。由于篇幅限制,本文就不再列出各个类的方法了,读者可自行上网查阅。下面举例说明该组件的使用方法。
1) 编写文件上传表单文件
文件上传表单使用属性值为file的input标记,注意表单必须以post方式提交,表单的enctype属性必须是multipart/form-data。该文件在三种文件上传方法中都需要用到。
2) 编写JSP文件实现文件上传
首先需要将下载的SmartUpload组件jar包拷贝至Web应用的WEB-INF\lib目录下,然后编写实现文件上传功能的JSP文件。文件上传核心代码如下:
注意不同浏览器的默认设置不同,IE浏览器默认提交文件的整个路径(可以在Internet安全设置更改为不包含本地路径),而火狐或谷歌浏览器默认只提交文件名,所以需要考虑可能包含路径的情况,把文件名从中提取出来。Commons FileUpload组件自身没有提供限制上传文件类型的方法,需要自行编码从文件名取出扩展名并与允许上传的文件扩展名进行比较,然后给出用户相应的错误提示。除了使用FileItem的write()方法保存文件外,还可以通过FileItem的getInputStream()方法获取文件输入流,然后再通过输出流保存至文件甚至是数据库。在上传文件时如果超出了文件大小限制,系统会抛出异常FileSizeLimitExceedException,此异常是FileUploadException异常的子类,所以可以捕获该异常,并在异常处理代码中给出用户错误提示。
3 Servlet 3.0文件上传
上述两种文件上传方法都需要用到第三方组件,而在最新的Servlet 3.0规范中,提供了对文件上传的原生支持,直接使用Servlet 3.0提供的API就能够轻松实现文件上传。较之Servlet2.5主要是增加了两个类:MultipartConfig和Part。其中MultipartConfig是注解类,要想让Servlet支持文件上传只需在其前面添加如下形式注解即可:
@MultipartConfig(maxFileSize=1024*1024*300) //设置单个文件最大上传大小,如300M
另外HttpServletRequest类还增加了一个getParts()方法,该方法可以获取表单提交过来的所有上传文件,这些文件信息封装在一个个的Part对象中。Part类提供了write方法用于保存上传的文件。在Servlet的doPost()方法编写如下代码:
for(Part part : request.getParts()) { //遍历所有上传的文件
String filename = getFilename(part); //自定义方法从请求头信息中得到文件名
File savePath = request.getServletContext().getRealPath(“upload\\”) + filename;
part.write(savePath); //保
您可能关注的文档
最近下载
- 八年级上名著《红岩》第10章(讲练测).docx VIP
- 表面处理技术在高端装备制造中的应用与挑战报告2025.docx
- 汪曾祺《钓鱼大夫》阅读答案试题解析理解 .pdf VIP
- 家庭反暴强制报告制度及服务流程.docx VIP
- 聚醚多元醇企业标准.pdf VIP
- 八年级上名著《红岩》第11章(讲练测).docx VIP
- T_CIATCM 093—2020_基层医疗卫生机构中医诊疗区(中医馆)团体标准远程会诊系统建设指南中国中医药信息学会.pdf VIP
- 八年级上名著《红岩》第12章(讲练测).docx VIP
- 2025国投生物制造创新研究院有限公司招聘(31人)考试备考试题及答案解析.docx VIP
- 边坡位移监测记录表.xlsx VIP
文档评论(0)