【问题标题】:How do I calculate the content-length of a file upload in ruby?如何计算 ruby​​ 中文件上传的内容长度?
【发布时间】:2010-05-23 07:00:49
【问题描述】:

我需要包含上传到网络服务的图片/png 文件的内容长度。

但是如何计算要包含在标头中的内容长度?

谢谢。

我正在使用 rest-client 提交它。

上传的webservice是Postful:文档一直不清楚:http://www.postful.com/developer/guide#uploading_attachments

因为我正在编写有效负载和标头,所以我似乎需要输入该值。

我也在查看 postalmethods,它说内容长度是用户输入:

http://postalmethods.com/method/2009-02-26/UploadFile

文件本身是 .PNG。我将使用 Paperclip 将它们附加到模型上,因此会有一个文件路径。

我需要内容长度发布的文件是使用回形针作为附件存储的,所以具体的代码生成问题是:

File.size(@postalcard.postalimage.url)

【问题讨论】:

    标签: ruby paperclip content-length


    【解决方案1】:

    嗯,您大概知道如何读取和发布数据 - 所以您知道您发送了多少数据。这就是内容长度。如果您只是将其直接以二进制形式作为帖子的正文发送,则它只是文件的长度。如果你是 base-64 编码,那么内容长度将是 ((file length + 2) / 3) * 4。如果它在一个 SOAP 信封等中,你需要考虑到这一点。

    对于复杂情况,一种方法是先在内存中构建整个帖子正文,设置内容长度,然后直接从内存复制到帖子正文。

    【讨论】:

    • 我如何获得那个大小...我应该只使用 File.size 吗?如果它是一个 SOAP 信封,你是什么意思 - 我想这就是我试图弄清楚网络服务的文档(我添加到我的问题)不清楚......
    • @Angela:看起来你没有信封或类似的东西——只有内容。所以只放尺寸的长度。 File.size 听起来是正确的方法;我不是 Ruby 人,所以我不确定。
    【解决方案2】:

    好吧,您可以使用File.size(filepath),但您不太可能需要 - 大多数用于发出 HTTP 请求的库都应该自动执行此操作 - 您使用的是哪个库? (或者,它是一种什么样的网络服务?)

    【讨论】:

    • 嗯...也许它是自动完成的,我正在使用rest-client。网络服务是 Postful 的:并且文档一直不清楚。 postful.com/developer/guide我也在查看 postalmethods,它说内容长度是用户输入:postalmethods.com/method/2009-02-26/UploadFile
    • 据我所知,该方法文档似乎没有提到 Content-length,只是 base64 格式的文件数据本身。你认为它在哪里说你需要提供长度?
    • 它在标题中说我需要提供内容长度:(
    • 这是我使用 youtube api v3 将缩略图上传到视频的方式。只是为了证明很有可能
    猜你喜欢
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2012-01-17
    相关资源
    最近更新 更多