java fileupload 进度_java file 进度条 文件上传

java  file 进度条

public class MyProgressListener implements ProgressListener

{

private HttpSession session;

public MyProgressListener(HttpServletRequest req)

{

session = req.getSession();

FileUploadStatus status = new FileUploadStatus();

session.setAttribute("status", status);

}

/*

* pBytesRead 到目前为止读取文件的比特数 pContentLength 文件总大小 pItems 目前正在读取第几个文件

*/

public void update(long pBytesRead, long pContentLength, int pItems)

{

FileUploadStatus status = (FileUploadStatus) session.getAttribute("status");

status.setPBytesRead(pBytesRead);

status.setPContentLength(pContentLength);

status.setPItems(pItems);

}

}

public void uploadFile(HttpServletRequest req, HttpServletResponse rsp)

{

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(2048 * 1024);

MyProgressListener getBarListener = new MyProgressListener(req);

ServletFileUpload upload = new ServletFileUpload(factory);

upload.setFileSizeMax(2 * 1024 * 1024);

upload.setHeaderEncoding("UTF-8");

upload.setProgressListener(getBarListener);

try

{

List formList = upload.parseRequest(req);

Iterator formItem = formList.iterator();

// 将进度监听器加载进去

while (formItem.hasNext())

{

FileItem item = (FileItem) formItem.next();

String originalNamePath = item.getName();

if (originalNamePath == null || originalNamePath.equals("")){continue;}

int index = originalNamePath.lastIndexOf("\\");

String originalName = "";

if (index != -1){

originalName = originalNamePath.substring(index + 1);

}else{

originalName = originalNamePath;

}

this.getSession().setAttribute(ORIGINAL_NAME, originalName);

if (item.isFormField()){

logger.info("Field Name:" + item.getFieldName());

}

else{

String filePostfix = item.getName().substring(item.getName().lastIndexOf(".") + 1).toLowerCase();

if (!(ArraysUtil.isIncludeStrings(new String[] { "bmp", "png", "jpeg", "jpg", "gif" }, filePostfix)))

{

// 文件格式不对

try

{

String rt = "{\"statuscode\":401}";

rsp.getWriter().write(rt);

break;

}

catch (Exception e)

{

}

}

String icoName = Long.toString(DatetimeUtil.getUniqueTimestamp());

String filenamew = "mulit" + icoName + "." + filePostfix;

File file = new File(FileUtil.getTomcatRootPath(req) + File.separatorChar + filenamew);

logger.info(FileUtil.getTomcatRootPath(req) + File.separatorChar + filenamew);

item.write(file);

this.getSession().setAttribute("oafile", filenamew);

logger.info("save oafile " + filenamew);

try

{

String rt1 = "{\"statuscode\":200,\"filename\":\"" + filenamew + "\"}";

rsp.getWriter().write(rt1);

break;

}

catch (Exception e)

{

}

}

}

}

catch (FileSizeLimitExceededException e1)

{

logger.warn("", e1);

e1.printStackTrace();

try

{

String rt = "{\"statuscode\":400}";

rsp.getWriter().write(rt);

}

catch (IOException e)

{

logger.warn("", e);

}

}

catch (FileUploadException e2)

{

logger.warn("", e2);

e2.printStackTrace();

}

catch (Exception e)

{

logger.warn("", e);

e.printStackTrace();

}

}

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。

谢谢您的赞助,我会做的更好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值