松鼠的博客

导航

文件上传和下载

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对象中解析出复合表单的每个子部分,但工作量依然非常复杂。

 

效果展示       

批量上传文件和文件夹 

说明: http://bbsres2.ncmem.com/731fda07.png 

文件和目录下载

 说明: http://bbsres2.ncmem.com/1176943f.png   


Mac控件安装教程与演示说明:

http://t.cn/AijgiFgW

http://t.cn/Aijg6z08

 

Linux控件安装教程与演示说明:

http://t.cn/Aijg6Lv3

http://t.cn/Aijg64k6

 

控件包下载: 

MacOShttp://t.cn/Aijg65dZ

Linuxhttp://t.cn/Aijg6fRV

cab(x86)http://t.cn/Ai9pmG8S 

cab(x64)http://t.cn/Ai9pm04B 

xpihttp://t.cn/Ai9pubUc 

crxhttp://t.cn/Ai9pmrcy 

exehttp://t.cn/Ai9puobe   

 

示例下载: 

asp.nethttp://t.cn/Ai9pue4A   

 

在线教程: 

asp.net-文件管理器教程:http://t.cn/AiNhmilv

 

个人博客:http://t.cn/AiY7heL0

 

www.webuploader.net

 

 

posted on 2019-08-05 14:00  Xproer-松鼠  阅读(213)  评论(0编辑  收藏  举报