fileupload上传下载
来源:互联网 发布:java 对象数组初始化 编辑:程序博客网 时间:2024/06/05 20:57
实现文件的上传,代码如下:
<%!
//服务器端保存上传文件的路径
String saveDirectory = "g://upload//";
// 临时路径 一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
String tmpDirectory = "g://upload//tmp//";
// 最多只允许在内存中存储的数据大小,单位:字节
int maxPostSize = 1024 * 1024;
%>
<%
// 文件内容
String FileDescription = null;
// 文件名(包括路径)
String FileName = null;
// 文件大小
long FileSize = 0;
// 文件类型
String ContentType = null;
%>
<%
DiskFileUpload fu = new DiskFileUpload();
// 设置允许用户上传文件大小,单位:字节
fu.setSizeMax(200*1024*1024);
// 设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(maxPostSize);
// 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("g://upload//tmp//");
//开始读取上传信息 得到所有文件
try{
List fileItems = fu.parseRequest(request);
}catch(FileUploadException e){
//这里异常产生的原因可能是用户上传文件超过限制、不明类型的文件等
//自己处理的代码
}
%>
<%
// 依次处理每个上传的文件
Iterator iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
//忽略其他不是文件域的所有表单信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
String contentType = item.getContentType();
if((name==null||name.equals("")) && size==0)
continue;
%>
<%
//保存上传的文件到指定的目录
String[] names=StringUtils.split(name,"//"); //对原来带路径的文件名进行分割
name = names[names.length-1];
item.write(new File(saveDirectory+ name));
}
}
%>
下面是其简单的使用场景:
A、上传项目只要足够小,就应该保留在内存里。
B、较大的项目应该被写在硬盘的临时文件上。
C、非常大的上传请求应该避免。
D、限制项目在内存中所占的空间,限制最大的上传请求,并且设定临时文件的位置。
可以根据具体使用用servlet来重写,具体参数配置可以统一放置到一配置文件
public void doGet(HttpServletRequest request,
HttpServletResponse response)
{
String aFilePath = null; //要下载的文件路径
String aFileName = null; //要下载的文件名
FileInputStream in = null; //输入流
ServletOutputStream out = null; //输出流
try
{
aFilePath = getFilePath(request);
aFileName = getFileName(request);
response.setContentType(getContentType(aFileName) + "; charset=UTF-8");
response.setHeader("Content-disposition", "attachment; filename=" + aFileName);
in = new FileInputStream(aFilePath + aFileName); //读入文件
out = response.getOutputStream();
out.flush();
int aRead = 0;
while((aRead = in.read()) != -1 & in != null)
{
out.write(aRead);
}
out.flush();
}
catch(Throwable e)
{
log.error("FileDownload doGet() IO error!",e);
}
finally
{
try
{
in.close();
out.close();
}
catch(Throwable e)
{
log.error("FileDownload doGet() IO close error!",e);
}
}
}
- fileupload上传下载
- commons-fileupload上传下载
- 文件上传下载之FileUpload
- commons-fileupload上传下载
- commons-fileupload上传下载文件
- JSP文件上传下载+FileUpload学习
- FileUpload 上传下载文件兼容IE8
- commons-fileupload实现文件上传下载
- FileUpload组件(文件上传下载)
- 文件上传下载之commons-fileupload
- 使用fileUpload实现上传下载demo
- commons-fileupload-1.2.2实现java上传下载
- 使用commons-fileupload组件上传下载文件
- JavaWeb_文件上传下载_演示fileupload
- JSP用common-fileupload实现文件上传下载
- fileupload组件实现上传下载(下载不是组件的)
- 基于commons-fileupload组件的上传下载与删除
- 基于commons-fileupload组件的实施上传下载与删除
- 软件工程之— 项目开发文档(用户手册概要)
- 软件工程之— 项目开发文档(概要设计说明书)
- 软件工程之— 项目开发文档(数据库设计说明书)
- 无题
- 软件工程之— 项目开发文档(组装测试计划)
- fileupload上传下载
- C# 将数据导出到Execl汇总(很全面)
- 软件工程之— 项目开发文档(详细设计说明书)
- 嵌入式C学习课件
- GOF 23种设计模式的有趣见解
- 软件工程之— 项目开发文档(模块开发说明)
- JAVA自学之路
- powerdesigner 去掉引号的方法
- 软件工程之— 项目开发文档(单元测试报告)