自定义的CustomMultiPartEntity 继承MultipartEntity
发布日期:2021-07-19 12:29:33 浏览次数:8 分类:技术文章

本文共 1619 字,大约阅读时间需要 5 分钟。

package com.example.upload;import java.io.FilterOutputStream;import java.io.IOException;import java.io.OutputStream;import java.nio.charset.Charset;import org.apache.http.entity.mime.HttpMultipartMode;import org.apache.http.entity.mime.MultipartEntity;public class CustomMultiPartEntity extends MultipartEntity {	private final ProgressListener listener;	public CustomMultiPartEntity(final ProgressListener listener) {		super();		this.listener = listener;	}	public CustomMultiPartEntity(final HttpMultipartMode mode, final ProgressListener listener) {		super(mode);		this.listener = listener;	}	public CustomMultiPartEntity(HttpMultipartMode mode, final String boundary, final Charset charset, final ProgressListener listener) {		super(mode, boundary, charset);		this.listener = listener;	}	@Override	public void writeTo(final OutputStream outstream) throws IOException {		super.writeTo(new CountingOutputStream(outstream, this.listener));	}	public static interface ProgressListener {		void transferred(long num);	}	public static class CountingOutputStream extends FilterOutputStream {		private final ProgressListener listener;		private long transferred;		public CountingOutputStream(final OutputStream out, final ProgressListener listener) {			super(out);			this.listener = listener;			this.transferred = 0;		}		public void write(byte[] b, int off, int len) throws IOException {			out.write(b, off, len);			this.transferred += len;			this.listener.transferred(this.transferred);		}		public void write(int b) throws IOException {			out.write(b);			this.transferred++;			this.listener.transferred(this.transferred);		}	}}

转载地址:https://blog.csdn.net/jdsjlzx/article/details/8895035 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android显示系统之View与SurfaceView更新屏幕的区别
下一篇:android实现带进度条的文件上传

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月03日 18时41分53秒