java file 进度条 文件上传

简介: java  file 进度条     public class MyProgressListener implements ProgressListener { private HttpSession session; public MyProgressLis...

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<FileItem> formList = upload.parseRequest(req);
			Iterator<FileItem> 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捐助),没钱捧个人场,谢谢各位。



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

 

 

目录
相关文章
|
3月前
|
Java API
从零开始学习 Java:简单易懂的入门指南之File类(二十九)
从零开始学习 Java:简单易懂的入门指南之File类(二十九)
|
4月前
|
Java API
Java之File类的详细解析及小练习
2. File类 2.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 2.2 构造方法
36 0
|
4月前
|
存储 Java
【零基础学Java】—File类(五十)
【零基础学Java】—File类(五十)
|
3月前
|
存储 Java 文件存储
|
3月前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
53 0
|
4月前
|
Java
【文件操作】Java -操作File对象
【文件操作】Java -操作File对象
33 0
|
4月前
|
Java
Java文本进度条
Java文本进度条
|
5月前
|
Java
java servlet 文件上传 req.getPart null 返回空值
java servlet 文件上传 req.getPart null 返回空值
68 0
|
1月前
|
存储 前端开发 Java
[java后端研发]——文件上传与下载(2种方式)
[java后端研发]——文件上传与下载(2种方式)
|
2月前
|
Java
JAVA零基础小白入门上手教程day15-泛型&File(三)
JAVA零基础小白入门上手教程day15-泛型&File
39 0