[英]MultiPart Upload Image Progress on Android
我正在嘗試使用下面提到的方法在我的Android客戶端上顯示上傳進度
MultipartEntity reqEntity = new MultipartEntity(){
@Override
public void writeTo(final OutputStream outstream) throws IOException {
super.writeTo(new UploadOutputStream(outstream,listener));
}
};
public class UploadOutputStream extends FilterOutputStream {
private final ProgressListener listener;
private long transferred;
public UploadOutputStream(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);
}
}
我將圖像添加到multipart ByteArrayBody,如下所示
reqEntity.addPart("image", bab);
問題是我只在整個圖像上傳時才看到進度更新。 我希望在上傳塊時進度。
任何幫助是極大的贊賞
非常感謝
馬南
我不認為這是多部分編碼的問題。 最有可能的是,HTTP客戶端通過發送單個write()
調用來優化寫入,因為它知道大小並且適合其緩沖區。 此調用很可能是塊,並且在此之后立即執行您的偵聽器。
您可以將out.write(b, off, len)
調用分成多個較小的調用,但速度要稍微過高。
弄清楚問題是因為我使用的是ByteArrayBody,它不會以塊的形式發送文件而是立即寫入整個流。 使用FileBody解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.