2012-07-02 30 views
13

Vì vậy, tôi đang tải lên tệp và sau đó tải xuống ... nhưng Nội dung dài trong tiêu đề tải lên không khớp với kích thước tệp. Tôi đoán có một số dữ liệu khác liên quan đến việc tính toán và chuyển giao này, nhưng chính xác thì sao? Làm cách nào để có được kích thước tệp chính xác từ Độ dài nội dung? Thậm chí có thể không?Lấy kích thước tệp từ tiêu đề nội dung tải lên nhiều tiêu đề Nội dung độ dài tiêu đề

Tôi biết có những ranh giới, và có thể một số những thứ khác, nhưng kiểm tra xem nó:

5380216 - 5379906 = 310 

"----WebKitFormBoundaryeoFyqD4zr6smwYDG".size 
→ 38 

Vì vậy, kích thước ranh giới là 38 ... 310 có một số màn hình LCD 5, 10, 31 ... những người không làm việc tốt với 38 trong bất kỳ cách nào ... Tôi bị mất!

kích thước tập tin:

[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

Kích thước được 5379906

Content-Length được báo cáo là 5380216

tại sao?

Trả lời

5

Tôi nghĩ rằng mỗi phần của yêu cầu nhiều phần/biểu mẫu dữ liệu được tính vào kích thước tổng thể của tiêu đề Content-Length chính.

Tìm thấy đây là một tài liệu tham khảo: http://chxo.com/be2/20050724_93bf.html

Vì vậy, có lẽ sau khi tiêu đề của bạn, bạn có thể có:

----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 

Tất cả trong số đó sẽ được tính vào kích thước Content-Length.

EDIT

Chỉ cần nhận ra tôi đã không trả lời câu hỏi của bạn. Không chắc cách kéo kích thước tệp từ phần tệp của yêu cầu. Lấy làm tiếc!

2

Dữ liệu bạn nhận được luôn lớn hơn tệp của bạn. Chỉ cần quét giá trị "ranh giới" cho phần bắt đầu và kết thúc của tệp.

Tham chiếu: How does HTTP file upload work?