这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下
来源:互联网 发布:枣庄政府网络解决方案 编辑:程序博客网 时间:2024/06/04 23:07
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。
对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,struts上传的功能就是基于这个实现的。common-fileupload是依赖于common-io这个包的,所以还需要下载这个包。
一、开发环境搭建
创建一个FileUploadAndDownLoad项目,加入Apache的commons-fileupload文件上传组件的相关Jar包,如下图所示:
二、实现文件上传
2.1、文件上传页面和消息提示页面
upload.jsp页面的代码如下:
message.jsp的代码如下:
2.2、处理文件上传的Servlet
UploadHandleServlet的代码如下:
在Web.xml文件中注册UploadHandleServlet
运行效果如下:
文件上传成功之后,上传的文件保存在了WEB-INF目录下的upload目录,如下图所示:
2.3、文件上传的细节
上述的代码虽然可以成功将文件上传到服务器上面的指定目录当中,但是文件上传功能有许多需要注意的小细节问题,以下列出的几点需要特别注意的
1、为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。
2、为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名。
3、为防止一个目录下面出现太多文件,要使用hash算法打散存储。
4、要限制上传文件的最大值。
5、要限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。
针对上述提出的5点细节问题,我们来改进一下UploadHandleServlet,改进后的代码如下:
针对上述提出的5点小细节问题进行改进之后,我们的文件上传功能就算是做得比较完善了。
三、文件下载
3.1、列出提供下载的文件资源
我们要将Web应用系统中的文件资源提供给用户进行下载,首先我们要有一个页面列出上传文件目录下的所有文件,当用户点击文件下载超链接时就进行下载操作,编写一个ListFileServlet,用于列出Web应用系统中所有下载文件。
ListFileServlet的代码如下:
这里简单说一下ListFileServlet中listfile方法,listfile方法是用来列出目录下的所有文件的,listfile方法内部用到了递归,在实际开发当中,我们肯定会在数据库创建一张表,里面会存储上传的文件名以及文件的具体存放目录,我们通过查询表就可以知道文件的具体存放目录,是不需要用到递归操作的,这个例子是因为没有使用数据库存储上传的文件名和文件的具体存放位置,而上传文件的存放位置又使用了散列算法打散存放,所以需要用到递归,在递归时,将获取到的文件名存放到从外面传递到listfile方法里面的Map集合当中,这样就可以保证所有的文件都存放在同一个Map集合当中。
在Web.xml文件中配置ListFileServlet
展示下载文件的listfile.jsp页面如下:
访问ListFileServlet,就可以在listfile.jsp页面中显示提供给用户下载的文件资源,如下图所示:
3.2、实现文件下载
编写一个用于处理文件下载的Servlet,DownLoadServlet的代码如下:
在Web.xml文件中配置DownLoadServlet
点击【下载】超链接,将请求提交到DownLoadServlet就行处理就可以实现文件下载了,运行效果如下图所示:
从运行结果可以看到,我们的文件下载功能已经可以正常下载文件了。
本文已被整理到了《Java上传操作技巧汇总》,欢迎大家学习阅读。
关于JavaWeb中的文件上传和下载功能的内容就这么多。
- 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下
- 这篇文章主要介绍了PHP整合七牛实现上传文件的相关资料,需要的朋友可以参考下
- SmartUpload上传组件实现文件的上传和下载功能
- struts2文件的上传和下载功能
- 文件的上传和下载功能
- Spring MVC实现文件的上传和下载的功能
- 文件上传与下载的功能实现
- 文件上传和下载功能
- 这篇文章主要介绍了python中的实例方法、静态方法、类方法、类变量和实例变量浅析,需要的朋友可以参考下
- 这篇文章主要介绍了Python os模块介绍,需要的朋友可以参考下
- web程序中上传和下载功能的详解
- Loadrunner进行文件的上传和下载 功能
- javaWEB 的文件上传功能
- javaWeb 实现文件下载的功能
- 利用Apache的commons-net实现FTP的文件读取、上传、下载、删除和移动功能
- 利用Apache的commons-net实现FTP的文件读取、上传、下载、删除和移动功能
- JAVA实现FTP服务器文件的上传,下载,删除功能
- struts2 实现简单的文件上传、下载功能
- 菜鸟用scrapy爬取虎扑图片
- 谷歌浏览器怎么调试js
- linux 按键驱动代码分析
- 11g dataguard 类型、保护模式、服务
- hibernate的关系映射
- 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在Web应用系统开发中,文件上传和下载功能是非常常用的功能,需要的朋友可以参考下
- MySQL 之 SQL 编程
- nuplayer处理服务端的应答消息notifyResponseListener
- 关于socket,http,udp,ip等之间 的关系
- 单链表之合并两个链表
- windows.open打开窗口并居中
- 案例实战Elasticsearch基本操作(一)
- docker 个人经验分享
- Android ViewGroup事件分发机制