2012-07-02 9 views
13

Also lade ich eine Datei hoch und lade sie herunter ... aber die Inhaltslänge in den Upload-Headern stimmt nicht mit der Dateigröße überein. Ich vermute, dass es bei dieser Berechnung und Übertragung noch andere Daten gibt, aber was genau? Wie erhalte ich eine genaue Dateigröße aus der Inhaltslänge? Ist es überhaupt möglich?Dateigröße aus mehrteiligem Formular-Upload abrufen Content-Length-Header

Ich weiß, es sind die Grenzen, und vielleicht noch einige andere Dinge, aber es überprüfen:

5380216 - 5379906 = 310 

"----WebKitFormBoundaryeoFyqD4zr6smwYDG".size 
→ 38 

So ist die Grenzgröße 38 ... 310 einige LCDs von 5, 10, 31 ... die funktionieren nicht gut mit 38 in irgendeiner Weise ... Ich bin verloren!

Dateigrößen:

[email protected] 1 williamcotton staff 5379906 Jul 2 12:02 testfile-downloaded.zip 
[email protected] 1 williamcotton staff 5379906 Jun 8 14:23 testfile-uploaded.zip 

HTTP Header

{ 
    host: 'localhost:8887', 
    connection: 'keep-alive', 
    'content-length': '5380217', 
    'cache-control': 'max-age=0', 
    origin: 'http://localhost:8887', 
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1193.0 Safari/537.1', 
    'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryeoFyqD4zr6smwYDG', 
    accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    referer: 'http://localhost:8887/', 
    'accept-encoding': 'gzip,deflate,sdch', 
    'accept-language': 'en-US,en;q=0.8', 
    'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' 
} 

tl; dr

Dateigröße ist 5379906

Content-Length als 5.380.216

berichtet

warum?

Antwort

5

Ich denke, dass jeder Abschnitt der multipart/Formulardatenanforderung in Bezug auf die Gesamtgröße der Haupt-Content-Length-Header zählt.

dies als Referenz gefunden: http://chxo.com/be2/20050724_93bf.html

Also, vielleicht nach dem Header, die Sie haben könnten:

----WebKitFormBoundaryeoFyqD4zr6smwYDG 

Content-Disposition: form-data; name="file"; filename="testfile-downloaded.zip"; size=<file size could be here> 
Content-Length: <file size could also be here> 
<some other content headers> 

<file data> 

----WebKitFormBoundaryeoFyqD4zr6smwYDG 

All das in Richtung auf die Content-Length Größe zählen würde.

EDIT

Nur erkannte ich Ihre Frage nicht beantworten. Nicht sicher, wie Sie die Dateigröße aus dem Dateiabschnitt der Anfrage entfernen. Es tut uns leid!

2

Die Daten, die Sie erhalten haben, sind immer größer als Ihre Datei. Scannen Sie einfach den "boundary" -Wert für den Anfang und das Ende der Datei.

Die Referenz: How does HTTP file upload work?