簡體   English   中英

Android上的MultiPart上傳圖像進度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM