2016-08-08 23 views
0

Ich möchte Upload-Dateigröße während des Web-Service zeigen. Also habe ich die folgenden zwei Links HttpClient Post with progress and MultipartEntityBuilder, gradle-hockeyapp-plugin wo ich die ProgressHttpEntityWrapper.java Klasse gefunden. Mit dieser Klasse habe ich die Upload-Dateigröße gefunden. Mit der folgenden MethodeTatsächliche Dateigröße und Upload-Dateigröße wird anders android

public String getFileSize(long size) { 
     if (size <= 0) 
      return "0"; 
     final String[] units = new String[] { mContext.getResources().getString(R.string.bytes), mContext.getResources().getString(R.string.kilo_bytes), mContext.getResources().getString(R.string.mega_bytes), mContext.getResources().getString(R.string.giga_bytes), mContext.getResources().getString(R.string.tera_bytes) }; 
     int digitGroups = (int) (Math.log10(size)/Math.log10(1024)); 
     return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) + " " + units[digitGroups]; 
    } 

aber es gibt falsche Dateigröße vergleichen als die ursprüngliche Dateigröße. Die tatsächliche und die Gesamtgröße der hochgeladenen Dateien variieren.

Zum Beispiel meine tatsächliche Dateigröße 297,1 KB, aber es zeigt die gesamte Dateigröße ist 365,5 KB. Warum die tatsächliche Dateigröße und die gesamte Dateigröße variiert Können Sie mir bitte eine Idee vorschlagen?

+0

Sie meinen, die Zeichenfolge, die Ihre Funktion zurückgibt, stimmt nicht mit der Länge überein, die Sie bestanden haben? – wutzebaer

+0

@wutzebaer Nein, bitte überprüfen Sie den zweiten Link, wo Sie die ProgressHttpEntityWrapper-Klasse finden. In dieser Klasse werden die gesamten Bytes innerhalb der Methode getCurrentProgress() zurückgegeben. Es ist nicht korrekt. Es variiert von der tatsächlichen Dateigröße. – Sangeetha

+0

vielleicht Offset + len ist größer tan b.length und damit nur ein Teil von len geschrieben wird? # – wutzebaer

Antwort

-1

Okay, danke für Ihre Antwort. Auch ich bin gefunden, warum die genaue Dateigröße nicht zurückkommt. Sein, weil wir diesen Aufruf zurück auf die gesamte Einheit wie unten zuweisen,

ProgressHttpEntityWrapper.ProgressCallback progressCallback = new ProgressHttpEntityWrapper.ProgressCallback() { 

    @Override 
    public void progress(float progress) { 
     //Use the progress 
    } 

} 

Im folgenden Code, den ich die Zuweisung diesen Fortschritt Rückruf meiner gesamten Einheit

httpPost.setEntity (neu ProgressHttpEntityWrapper (entityBuilder. build(), progressCallback));

wo diese Entität nicht nur meine Datei enthält. Es enthält auch meine Thumbnail-Datei und andere Parameter. So wird die Größe unterschiedlich. Also habe ich meine Dateigröße mit Thumbnail-Größe hinzugefügt. Es wird näher der Größe meiner Upload-Datei Größe sein, die verbleibenden Bytes werden für meine anderen Parameter genommen werden. Jetzt habe ich es gelöst.

+0

Keine Antwort, und Material, das Teil einer Frage ist, muss ** in der Frage selbst ** gepostet werden, nicht über einen Link. In diesem Fall ist es klar, dass Ihr Kopiercode falsch ist, nicht Ihr nunber Formatierungscode. – EJP

Verwandte Themen