【问题标题】:Get file size from multipart form upload Content-Length header从多部分表单上传 Content-Length 标头获取文件大小
【发布时间】:2012-07-03 06:41:17
【问题描述】:

所以,我正在上传一个文件,然后下载它...但是上传标头中的 Content-Length 与文件大小不匹配。我猜这个计算和传输还涉及其他一些数据,但究竟是什么?如何从 Content-Length 获得准确的文件大小?有没有可能?

我知道有界限,也许还有其他一些东西,但请检查一下:

5380216 - 5379906 = 310

"----WebKitFormBoundaryeoFyqD4zr6smwYDG".size
→ 38

所以边界大小是 38...310 有一些 LCD 为 5、10、31...这些与 38 不兼容...我迷路了!

文件大小:

-rw-r--r--@  1 williamcotton  staff    5379906 Jul  2 12:02 testfile-downloaded.zip
-rw-r--r--@  1 williamcotton  staff    5379906 Jun  8 14:23 testfile-uploaded.zip

HTTP 标头

{ 
  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;博士

文件大小为 5379906

Content-Length 报告为 5380216

为什么?

【问题讨论】:

    标签: http http-headers content-length multipartform-data


    【解决方案1】:

    我认为 multipart/form-data 请求的每个部分都计入主 Content-Length 标头的总体大小。

    找到这个作为参考: http://chxo.com/be2/20050724_93bf.html

    所以,也许在你的标题之后,你可能有:

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

    所有这些都将计入 Content-Length 大小。

    编辑

    刚刚意识到我没有回答你的问题。不确定如何从请求的文件部分中提取文件大小。对不起!

    【讨论】:

      【解决方案2】:

      您收到的数据总是比您归档的要大。只需扫描文件开头和结尾的“边界”值即可。

      参考: How does HTTP file upload work?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        • 2011-01-26
        • 1970-01-01
        • 1970-01-01
        • 2017-01-22
        相关资源
        最近更新 更多