想在传文件时做一个进度条显示传输的比例,现在有个问题,本地显示的进度条,刚开始时,怎么获得远程传过来的文件的大小?
请高手们指点
------解决方案--------------------------------------------------------
lz可以感觉上传文件读取的流来判断上传多少,和文件总共有多少字节
然后用ajax每0.5秒请求一次并判断上传多少百分比
进度条用css和百分比来判断长度
提交上传方法,ajax访问读取流数据的方法。
这样就可以了
原理很简单
------解决方案--------------------------------------------------------
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
* 看看我的是用commons fileupload组件
*/
package com.oy.struts.action;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.oy.image.model.LoginUser;
import com.oy.image.service.ImageManager;
public class KKAction extends Action {
private static final long serialVersionUID = 2431664260164700200L;
private ServletContext sc;
private String savePath;
private ImageManager imageManager;
public void setImageManager(ImageManager imageManager) {
this.imageManager = imageManager;
}
/**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
savePath =request.getSession().getServletContext().getInitParameter("uploads");
//savePath=config.getServletContext().getInitParameter("savePath");
System.out.println("+++++++++++++++++++"+savePath);
// if(!new File(savePath).isDirectory())
System.out.println(new File(savePath).getAbsolutePath());
if(!new File(savePath).exists())
{
new File(savePath).mkdirs();
}
sc = request.getSession().getServletContext();
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String userName = null;
String url = null;
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (item.isFormField()) {
userName = item.getString("UTF-8");
System.out.println("表单的参数名称:" + item.getFieldName() + ",对应的参数值:"
+ item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
url = file.getAbsolutePath();