18.文件的上传和下载

1.熟悉各种表单域

常用的表单标签:

通常使用<input>标签向服务器端提交数据
<input>标签常用类型有9种类型
text:文本域
password:密码文本域
radio:单选按钮
checkbox:多选按钮
file:文件上传
hidden:隐藏域
reset:重置按钮
submit:提交按钮
button:按钮

其他常用表单标签
<textarea name=“" rows=“3” cols=“3”>多行文本</textarea>
<select name="i_select"> <option value="1" >第一项</option> <option value="2" >第二项</option> <option value="3" >第三项</option> </select>

观察实验中示例,通常表单域的值都是value值,在服务器端使用request.getParameter("name")取得
几个较特殊的标签
<textarea>这里是该标签的值</textarea>
<select name="i_select"> <option value=“值" >第一项</option> </select>
<input type="checkbox" />
如果没有value,默认选中为"on",否则为null
如果有value值,选中的值为其value值
使用request.getParameterValues()方法得到值的字符串数组
<input type="radio">
一组radio的名字相同,value要设置且不同
文件提交<input type="file" />

2.文件上传

 文件域

表单中文件输入类型允许将客户端计算机内的文件上传至服务器端
<form action="…" enctype="multipart/form-data">
<input type="file" name="upfile" />
<input type="submit" />
</form>
文件输入域的属性
accept: 设定用户能够上传文件之MIME类型
size: 文件输入字段的大小
name: 文件输入字段的名称
value: 默认的文件名称
maxlength: 文件名称最大长度限制

文本类型数据(如:Text、Select等)传送数据到服务器端时,使用的编码方式为:
enctype="application/x-www-form-urlencoded"
若要传送文件至服务器端,必须使用
enctype="multipart/form-data"
由于在传送数据时所使用的编码方式不同,因此在接收客户端传来的文件数据时,不能直接使用request.getParameter()方法

使用request.getInputStream方法可以获得客户端浏览器POST方式传来的数据流,但得到的数据流还包括一些其他信息

getServletContext().getRealPath()方法取得服务器端某文件的实际路径

JSPSmartUpload:

是一套免费的组件,简单好用,但官方网站已经关闭,且没有源代码

示例

步骤

创建SmartUpload对象

初始化SmartUpload对象

根据Form的内容上传

保存文件到服务器端

JSPSmartUpload主要功能:

使用setMaxFileSize()限制上传文件大小
getFiles()得到多个上传文件
setAllowedFilesList来限制上传文件类型

还可以进行文件下载的操作

O'Reilly cos组件:

O'reilly公司提供的cos组件,可免费下载且有源代码,会定期更新功能
下载地址:http://www.servlets.com/cos/index.html
示例
创建MultipartRequest对象
在构造方法中传入request、文件存放路径、文件名的编码方式
通过MultipartRequest.getFileNames()得到上传文件的反馈信息

Apache commons-fileupload:

commons-fileupload是目前JavaWeb应用最广泛的上传组件
commons-fileupload组件需要有commons-io组件的支持
示例
步骤
创建DiskFileItemFactory
使用factory创建一个ServletFileUpload
使用parseRequest方法解析request得到FileItem列表
用FileItem的write方法写到一个目标文件中(自己起文件名)

文件上传思考:

多文件上传
服务器端的路径及名称要考虑
限制上传文件大小
文件名中文问题
表单里同时有普通域也有文件域
上传进度条

3.文件下载:

HttpResponse对象实现文件下载
确定下载文件的地址(路径)
response设置响应的内容类型
response设置响应头信息
读取文件
通过response以文件流的形式响应给客户端

复习常用的表单域
文件上传
O’reilly cos插件
Apache common-fileupload 插件
文件下载
Response以流的方式将文件响应给客户端

实验
文件上传
头像上传
多文件上传
文本域、文件域混合提交
文件下载
页面提交文件名下载指定文件

猜你喜欢

转载自www.cnblogs.com/Firesun/p/9767611.html
18.