上传和下载---第十六天

时间:2022-11-12 17:21:48

四个不同范围的内置对象 setAttgetAtt

pageContext 只在本页中有效果

request 上下文

session 整个对话(不关闭浏览器都可以的数据)

application 整个服务器(不关闭服务器都可以得数据)

 

 

 

上传下载:

 

上传:smartupload

特点:

1 免费

2 代码简单

3 已经停止更新

 

步骤:

1 导入相关jar

2 通过表单提交(method必须为post

并且for标签多写一个属性:

enctype="multipart/form-data"

(可以提交多种类型的文件)

3 上传的表单元素标签<input type=file 

4 上传页面:

//得到smartupload对象

SmartUpload su=new SmartUpload();

//初始化

su.initialize(pageContext);

//设置编码格式

su.setCharset("utf-8");

//限制上传的类型

//su.setAllowedFilesList("jpg,png,gif");//允许上传的文件类型

//su.setDeniedFilesList("exe,mp3"); //不允许上传的文件类型

//限制上传的大小

//su.setMaxFileSize(1024*1024*2);//限制单个文件的大小 字节

//su.setTotalMaxFileSize(500000);//限制总文件的大小

 

//上传到临时文件夹

su.upload();

//得到上传的文件

Files files= su.getFiles();

//循环遍历所有文件

for(int i=0;i<files.getCount();i++){

//得到第i个文件

File file= files.getFile(i);

//getFieldName --name值

//file.getFileName -- 文件名

//System.out.println(file.getFieldName()+"--"+file.getFileName());

if(!file.isMissing()){//如果选择了文件

int index=file.getFileName().lastIndexOf(".");// aa.png

long l= System.currentTimeMillis();

String str1=file.getFileName().substring(0, index);

String str2=file.getFileName().substring(index);

String filename=str1+l+str2;

String path=request.getRealPath("fileup/"+filename);

 

//上传

file.saveAs(path);

}

 

 

 

 

客户端只能访问tomcat服务器中的文件,不能访问服务器端的其他路径(是为了安全性)

 

下载:

//接受?传参 并且处理中文乱码

String filename=request.getParameter("filename");

filename=new String(filename.getBytes("ISO-8859-1"),"utf-8");

String path=request.getRealPath("fileup/"+filename);

File file=new File(path);

if(file.exists()){//如果存在

//设置响应头 (通过浏览器可以有下载的功能)

response.setHeader("Content-Disposition","attachment;filename="+URLEncoder.encode(filename,"utf-8"));

//读

FileInputStream fis=new FileInputStream(file);

byte[] bytes=new byte[(int)file.length()];

fis.read(bytes);

fis.close();

//写 通过response的输出流

OutputStream os=response.getOutputStream();

os.write(bytes);

os.close();

//解决冲突  os和 response.getWriter();

out.clear();

out=pageContext.pushBody();

}

 

 

 

补充:在页面中去引用其他页面

 <%@ include file="xxx.jsp" %>

 

 

我们能够在JSP中写哪些东东?

1 <%%>

2 <%=%>

3<%@ %>

4 HTML+CSS+JS

5 <%! %> --JSP中定义方法