45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:如何在jsp中上传大文件?

如何在jsp中上传大文件?

2016-08-27 15:52:16 来源:www.45fan.com 【

如何在jsp中上传大文件?

存到数据库过程前,最好用临时文件保存一下,然后再读取文件存到数据库。正常情况,前台提交到后台,修改配置文件的上传大小,最主要耗时间的是文件处理,这个处理过程最好用线程做。

public ActionForward doFileAddExcute(ActionMapping mapping,
CommonForm form, HttpServletRequest request,
HttpServletResponse response) {
FileWorker worker = null;
// 処理No(0:処理中、1:成功、2:失敗)
String workNo = actionForm.getWorkNo();
//前台得到线程处理号
if (StringUtils.hasText(workNo)) {
worker = FileThreadPool.getWorker(workNo);
// 処理成功
if ("1".equals(worker.isFinish())) {
FileThreadPool.removeWorker(workNo);
} else if ("2".equals(worker.isFinish())) {
throw new SystemException();
}
} else {
//上传处理类
FileAddUpd fileAddUpdter = new FileRegist(fileVo, fileList);
worker = FileThreadPool.createrWorker(fileAddUpdter);
worker.start();
}
 
try {
// 根据得到文件
FileInfo fileInfoD = (FileInfo) fileList.get(0);
String fileSizeD = BusinessUtils.getTotalSize(
fileInfoD.getFileSize(), 0);
FileInfo fileInfoS = (FileInfo) fileList.get(1);
String fileSizeS = BusinessUtils.getTotalSize(
fileInfoS.getFileSize(), 0);
int fileSize = Integer.parseInt(fileSizeD)
+ Integer.parseInt(fileSizeS);
 
//根据文件大小估计处理的时间
if (fileSize < 5) {
Thread.sleep(5000);
} else if (fileSize < 50) {
Thread.sleep(30000);
} else {
Thread.sleep(60000);
}
} catch (InterruptedException e) {
throw new SystemException();
}
 
// 前台付処理No,以便下一次得到线程
actionForm.setWorkNo(worker.getThreadNo());
 
// request保存
request.setAttribute(Constants.FILETREAT_ACTIONFORM, actionForm);
 
// 処理中
if ("0".equals(worker.isFinish())) {
// 処理失敗
} else if ("2".equals(worker.isFinish())) {
throw new SystemException();
// 処理成功
} else {
FileThreadPool.removeWorker(workNo);
}
}
}
 

本文地址:http://www.45fan.com/a/question/68431.html
Tags: 文件 JSP 上传
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部