自定义的CustomMultiPartEntity 继承MultipartEntity

来源:互联网 发布:看小电影的网站知乎 编辑:程序博客网 时间:2024/06/01 23:43
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;}@Overridepublic 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);}}}


原创粉丝点击