2010-05-23 50 views
2

我需要包含一个图片/ PNG文件的内容长度上传到web服务。如何计算ruby中文件上传的内容长度?

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

谢谢。

我使用rest-client提交它。

对上传的Web服务是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) 

回答

1

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

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

+0

我该如何得到那个大小......我应该只使用File.size? 你是什么意思,如果它要一个SOAP信封 - 我想这就是我想弄清楚的文档(我添加到我的问题)的web服务不清楚.... – Angela 2010-05-23 17:17:04

+0

@Angela:看起来你没有信封或任何类似的东西 - 只是内容。所以只需放大小的长度。 File.size听起来像是正确的路要走;我不是红宝石的人,所以我不知道。 – 2010-05-23 18:14:22

+0

好吧,希望这是正确的方式,令人困惑。 – Angela 2010-05-29 16:51:20

1

那么,你可以使用File.size(filepath),但它不太可能会需要 - 大多数库用于发出HTTP请求应该自动执行 - 您正在使用哪个库? (或者,它是什么样的web服务?)

+0

嗯......也许它是自动完成的,我正在使用rest-client。 Web服务是Postful:并且文档不清楚。 http://www.postful.com/developer/guide 我也在看邮政方法,它说内容长度是用户输入: http://www.postalmethods.com/method/2009- 02-26/UploadFile – Angela 2010-05-23 17:04:45

+0

就我所见,该方法文档似乎没有提及Content-length,只是基于base64格式的文件数据本身。你认为哪里说你需要提供长度? – Gareth 2010-05-23 23:10:12

+0

它在标题中说我需要提供的内容长度:( – Angela 2010-05-29 16:50:55