Day23
文件上传/http协议头中的文件上传信息/Upload/download/UrlConnection
Fileuplad上传组件/COS文件上传组件
文件下载/断点下载/多线程下载
1、今天的主要内容如下
1)、文件上传下载与
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
单类型设置。
2)、文件上传组件fileupload。
3)、几个文件上传对象:DiskFileItemFactory,ServletFileUplad,FileItem。
将上传的文件名保存到数据库中。
文件重命名。
文件
目录
工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录
打散。
文件上传时可不可上传多个文件
4)、文件下载。
5)、用COS实现文件上传。
6)、项目示例,用户相册管理。自己可以看到自己的相处。-同学们自己动手动脑时间。
URLConnection发送GET/POST请求。
使用URLConnection连接服务器实现下载。断点下载。
7)、相册管理系统。
8、dbutils与回调
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
。-回调模式
2、文件上传
文件上传的条件:
2.1、实现一个文件上传
1:思想:
1.1:提供一个选择文件页面。就是表单
以下是表单:
1.2、上传的文件 ,必须要保存到服务器指定的目录下
开发一个servlet,用req.getInputStream()读取信息
2.2、以下是解析的文件 上传的HTTP协议:
2.3、在http协议中解析出正文
3、用第三方上传组件实现的文件的上传
A: apache-fileupload组件 – apache开发的。性能中。用的用户最多。目前已经成为了struts的
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的上传组件。
B:COS文件上传,性能最快。最简单,一句话。Orriliy()
C:JSP_SmartUploads – 超200M直接就不能实现上传。。
3.1、apache-fileupload实现文件上传
第一步:将zip解压以后放到web-inf/lib目录下
第二步: 了解核心类
类名
说明
用法
DiskFileItemFactory
设置临时目录用的。用来保存临时文件。设置的是服务器目录。
New DiskFileItemFactory(内存大小10K,new File(指定临时目录,temp));
ServletFileUpload
解析request的核心类。因为所有的二进制的文件信息都在request中。
servvletFileUpload.parse(request);
FileItem
一个文件就是一个FileItem就是一个File对象。
获取文件的io
fileItem.getInputStream();
第三步:开发一个上传的页面:
第四步:开发Up02Servlet实现用fileupload组件的上传
public class Up02Servlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
//1:声明临时空间,sizeThreshold-内存大小
//repository:临时目录
DiskFileItemFactory disk = new DiskFileItemFactory(1024*10,new File("d:/a"));
//2:声明核心类,用于解析request
ServletFileUpload upload =
new ServletFileUpload(disk);
try {
//3:解析request,从request.getInputStream()中解析出所有的文件
List
list = upload.parseRequest(request);
//4:获取第一个文件
FileItem file = list.get(0);
//5:获取文件名,在IE6中文件名为:C:\a\a\a.txt,IE7,FF,Chrome以后文件名直接就是a.txt
String fileName = file.getName();
fileName=fileName.substring(fileName.lastIndexOf("\\")+1);
//5.1:获取文件类型
String cType = file.getContentType();
//5.2:获取文件大小,以byte为计量单位
long size = file.getSize();
//6:开始io
//先获取文件要保存的目录
String path = getServletContext().getRealPath("/up");
//7:获取inputStream
InputStream in = file.getInputStream();
byte[] b = new byte[1024];
int len = 0;
//8:声明一个输出流,字节
OutputStream put = new FileOutputStream(path+"/"+fileName);
while((len=in.read(b))!=-1){
put.write(b,0,len);
}
put.close();
in.close();
//显示文件名
out.print("文件名为:"+fileName+"
");
out.print("文件类型:"+cType+"
");
out.print("文件大小:"+size+" bytes
");
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
3.2、上传多个文件
第一步:开发一个页面,上传表单中包含两个file元素
第二步:开发Up03Servlet
public class Up03Servlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
//声明文件上传的目录
String path = getServletContext().getRealPath("/up");
DiskFileItemFactory disk = new DiskFileItemFactory();
disk.setRepository(new File("d:/a"));
try{
ServletFileUpload up = new ServletFileUpload(disk);
//解析
List files = up.parseRequest(request);
//声明用于封装数据的list
List