您的位置 首页 > 数码极客

[java如何处理大文件上传]JAVA文件上传进度条…

一、什么是fileUpload?

fileUpload是apache的commons组件提供的上传组件,它最主要的工作就是帮我们解析reque()。可以参考在线API文档:


二、fileupload组件工作原理

三、fileupload核心API

1. DiskFileItemFactory

构造器

1) DiskFileItemFactory() // 使用默认配置

2) DiskFileItemFactory(int sizeThreshold, File repository)

 sizeThreshold 内存缓冲区, 不能设置太大, 否则会导致JVM崩溃

 repository 临时文件目录

2. ServletFileUpload

1) isMutipartContent(request) // 判断上传表单是否为multipart/form-data类型 true/false

2) parseRequest(request) // 解析request, 返回值为List<FileItem>类型

3) isFormField() //是否是普通文件

4) setFileSizeMax(long) // 上传文件单个最大值 fileupload内部通过抛出异常的形式处理, 处理文件大小超出限制, 可以通过捕获这个异常, 提示给用户

5) setSizeMax(long) // 上传文件总量最大值

6) setHeaderEncoding(String) // 设置编码格式


四、实现过程

1.导入jar包

2.编写jsp

3.编写servlet

//创建业务层对象

NewsService newsService = new NewsService();

InputStream in = null;

OutputStream out = null;

int id = 0;//页面传来的id值

//创建解析器工厂

DiskFileItemFactory factory = new DiskFileItemFactory();

//获取解析器

ServletFileUpload upload = new ServletFileUpload(factory);

// 上传表单是否为multipart/form-data类型

if(!u(request)) {

return ;

}

//解析request的输入流

try {

List<FileItem> parseRequest = u(request);

//迭代list

for(FileItem f:parseRequest) {

i()) {

//普通字段

id = In());

String value = f.getString();

Sy("name"+"="+value);

}else {

//上传文件

//获取上传文件名

String name = f.getName();

Sy("文件名"+name);

name = name.substring("\\")+1);

Sy(name);

//获取输入流

in = f.getInputStream();

//获取上传文件路径

String savePath = "D:\\workspacedt91\\FileUpLoadTestDemo\\WebContent\\images\\"+name;

//上传文件名若不存在, 则先创建

File path = new File(savePath);

if(!()) {

().mkdir();

}

//获取输出流

out = new FileOutputStream(path);

int len = 0;

byte[] b = new byte[1024];

while((len = in.read(b)) > 0) {

out.write(b,0,len);

}

Sy("上传成功");

//保存到数据库

int count = new(name, id);

if(count > 0 ) {

Sy("路径保存成功");

}else {

Sy("路径保存失败");

}

}

}

} catch (FileUploadException e) {

// TODO Auto-generated catch block

Sy("上传失败");

e.printStackTrace();

}finally {

if(in != null) {

in.close();

}

if(out != null) {

out.close();

}

}

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“java如何处理大文件上传,JAVA文件上传进度条,JAVA文件上传,JAVA,文件上传,JAVA文件上传下载”边界阅读