package myupload.progressbar;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class Upload extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
response.setContentType("text;charset=ISO-8859-1");
if ("status".equalsIgnoreCase(request.getParameter("status"))) {
status(response);
} else {
totalSize = request.getContentLength();
try {
upload(request);
} catch (FileUploadException e) {
e.printStackTrace();
}
}
}
private void upload(HttpServletRequest request) throws FileUploadException,
IOException {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
for (Iterator it = items.iterator(); it.hasNext();) {
FileItem fileItem = (FileItem) it.next();
if (!fileItem.isFormField()) {
String fileName = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1);
File file = new File("C:/", fileName);
InputStream in = fileItem.getInputStream();
FileOutputStream out = new FileOutputStream(file);
byte[] buffer = new byte[2048];
int n;
while ((n = in.read(buffer)) != -1) {
out.write(buffer, 0, n);
completedSize += (long) n;
}
fileItem.delete();
}
}
totalSize = completedSize = 0L;
}
private void status(HttpServletResponse response) throws IOException {
long lastSeconds = (System.currentTimeMillis() - startTime) / 1000;
double percentd = (double) (completedSize * 100)
/ (double) (totalSize + 0.0001);
int percent = (int) (percentd);
int uploadSpeed = (int) (completedSize / (lastSeconds + 0.0001));
System.out.print("lastSeconds:" + lastSeconds + "\tuploadSpeed:"
+ uploadSpeed + "\tpercent:" + percent);
System.out.println("\tcompletedSize:" + completedSize + "\ttotalSize:"
+ totalSize);
response.getWriter().print(percent);
}
public void init() throws ServletException {
totalSize = 0L;
completedSize = 0L;
startTime = System.currentTimeMillis();
}
private long totalSize = 0L;
private long completedSize = 0L;
private long startTime = 0L;
}
Ajax + servlet 实现上传进度条显示
4星 · 超过85%的资源 需积分: 16 30 浏览量
2007-07-30
10:59:17
上传
评论 1
收藏 101KB RAR 举报
zhaobq
- 粉丝: 0
- 资源: 1
最新资源
- 学习windows内核,保护模式、进程、线程、内存、APC、DPC、同步与异步、windows异常机制.zip
- 存放个人windows下的部分环境配置文件.zip
- Windows下整数大数计算器.zip
- windows下NTFS文件系统读取.zip
- Windows的一键搭建签名.zip
- windows程序设计课程 相关代码.zip
- Windows via C++图书代码,升级Windows SDK 到10.zip
- IdeaShare SDK Windows平台集成Demo.zip
- matlab基于扩张卡尔曼滤波的磷酸铁锂蓄电池SOC检测,给出了电池模型和算法实现过程.zip
- matlab基于卡尔曼滤波的磷酸铁锂蓄电池SOC检测
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页