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捐助),没钱捧个人场,谢谢各位。



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

 

 

目录
相关文章
|
24天前
|
Java 编译器 Maven
Java“class file contains wrong class”解决
当Java程序运行时出现“class file contains wrong class”错误,通常是因为类文件与预期的类名不匹配。解决方法包括:1. 确保类名和文件名一致;2. 清理并重新编译项目;3. 检查包声明是否正确。
|
1月前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
535 1
|
2月前
|
Java 大数据 API
Java 流(Stream)、文件(File)和IO的区别
Java中的流(Stream)、文件(File)和输入/输出(I/O)是处理数据的关键概念。`File`类用于基本文件操作,如创建、删除和检查文件;流则提供了数据读写的抽象机制,适用于文件、内存和网络等多种数据源;I/O涵盖更广泛的输入输出操作,包括文件I/O、网络通信等,并支持异常处理和缓冲等功能。实际开发中,这三者常结合使用,以实现高效的数据处理。例如,`File`用于管理文件路径,`Stream`用于读写数据,I/O则处理复杂的输入输出需求。
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
1月前
|
Java
java 文件上传和下载
java 文件上传和下载
22 0
|
3月前
|
Java 编译器
成功解决:java file outside of source root
解决Java文件不在源代码根目录内的问题,可以通过在IDEA中将包含.java文件的目录设置为Sources Root来修复。
成功解决:java file outside of source root
|
3月前
|
Java
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
这篇文章介绍了Java中使用`renameTo()`、`Files.copy()`等方法对文件进行重命名、移动和复制的操作,并提供了代码实例和测试效果。
java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
|
3月前
|
存储 缓存 Java
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
15 Java IO流(File类+IO流+字节流+字符流+字节编码)
53 3
|
4月前
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
185 9
|
4月前
|
缓存 前端开发 Java
在Java项目中实现高性能的文件上传下载
在Java项目中实现高性能的文件上传下载
下一篇
无影云桌面