文件上传和下载
1.文件的上传和下载
HTTP请求及HTTP响应中都包含正文部分。HTTP响应的正文部分最常见的是HTML文档,此外还可以是其他任意格式的数据,如图片和声音文件中的数据。同样,HTTP请求的正文部分不仅可以是字符串格式的请求参数,也可以是其他任意格式的数据。
Web
文件下载
文件下载是指把服务器端的文件发送到客户端,Servlet能够向客户端发送任意格式的文件数据。
文件上传
文件上传指把客户端文件发送到服务器端。此时,客户端发送的HTTP请求正文采用 multipart/form-data数据类型,它表示复杂的包含多个子部分的复合表单。
文件上传原理分析:
HTML核心代码 <form method="post" enctype="MULTIPART/FORM-DATA" action=" UploadServlet"> Choose File: <input type="file" name="filedata" size="30"/> <input type="submit" name="submit" value="upload"> </form> 运行显示如下图 此时点击浏览,选择Data.txt文件作为上传文件。 Data.txt中包含如下内容 Test Dataupload01 Test Dataupload02 Test Dataupload03 Test Dataupload04 此时点击upload按钮,提交给Web服务器。此时HTTP请求信息 分析上传文件的HTTP请求 HTTP请求的正文部分为复合类型,包含两个子部分:文件部分和提交按钮部分。提交请求时,浏览器随机产生了一个字符串形式的边界(boundary)作为HTTP请求头的一部分: HTTP请求的正文部分的各个子部分之间用边界进行分割。每个子部分由头和正文部分组成,头和正文部分之间用空行分割。如下图 |
根据以前所学,如果要将Data.txt文件中数据上传到服务器,需要对HTTP请求进行解析,读取其中的边界值,再根据边界值定位到文件部分,进而定位到文件部分的正文部分,再把正文部分的数据保存到本地文件系统中。 此程序可向服务器端上传任意格式的文件数据。一般处理文件部分的正文部分时,会按照字节流而不是字符流处理写到本地文件整。 思路:解析该HTTP请求,将上传的信息保存到服务器。 |
根据以上分析,不管HTTP请求正文为何种数据类型,Servlet容器都会把HTTP请求包装成一个HttpServletRequest对象。请求正文为”multipart/form-data”数据类型时,Servlet直接从HttpServletRequest对象中解析出复合表单的每个子部分,但工作量依然非常复杂。
效果展示
批量上传文件和文件夹
文件和目录下载
Mac控件安装教程与演示说明:
Linux控件安装教程与演示说明:
控件包下载:
MacOS:http://t.cn/Aijg65dZ
Linux:http://t.cn/Aijg6fRV
cab(x86):http://t.cn/Ai9pmG8S
cab(x64):http://t.cn/Ai9pm04B
示例下载:
asp.net:http://t.cn/Ai9pue4A
在线教程:
asp.net-文件管理器教程:http://t.cn/AiNhmilv
个人博客:http://t.cn/AiY7heL0