Ruby通过HTTP将文件流作为多部分/表单数据发布?
现在,我需要发布文件流,而不是本地文件。过程是: 客户端(文件)--->我的服务器---->第三方云存储,传输为文件流。 我发现这篇文章: 您可以看到,文件参数的Ruby通过HTTP将文件流作为多部分/表单数据发布?,ruby,ruby-on-rails-3,filestream,Ruby,Ruby On Rails 3,Filestream,现在,我需要发布文件流,而不是本地文件。过程是: 客户端(文件)--->我的服务器---->第三方云存储,传输为文件流。 我发现这篇文章: 您可以看到,文件参数的name\u是一个本地文件,而不是流 所以我想知道,如果这是来自客户端的文件流,我应该怎么做您应该能够使用任何IO对象(包括流)作为参数: RestClient.post('http://localhost:3000/foo', :name_of_file_param => my_stream) 谢谢,这很有效。现在我可以用这
name\u是一个本地文件,而不是流
所以我想知道,如果这是来自客户端的文件流,我应该怎么做您应该能够使用任何IO对象(包括流)作为参数:
RestClient.post('http://localhost:3000/foo', :name_of_file_param => my_stream)
谢谢,这很有效。现在我可以用这个上传本地文件和文件流。但是现在我需要上传一个远程文件到云存储服务器,所以我必须将远程文件读取到文件流,我使用open uri
,但这仍然不起作用,似乎流格式不正确。那么我该怎么办?谢谢您应该能够将打开uri的结果写入Tempfile
或StringIO
,然后这应该与任何其他IO对象一样。是的,您是对的,我想将打开uri的结果写入StringIO
。但是当我使用openuri
将远程文件传输到文件流时,云存储返回一个错误,即格式不对,我认为原因是编码不是ASCII-8BIT
如果文件来自用户客户端上载,则呈现文本:params[:file]
将引发一个错误“\xFF”从ASCII-8BIT到UTF-8
这表明文件编码是ASCII-8BIT
。但是远程文件呈现文本:web_内容
将返回像����JFIF``��C
因此此编码与自定义uoload文件不同。您能告诉我原因吗?谢谢不知道。请为此添加一个单独的问题,并尝试更详细地解释您的问题。这是一个完全不同的话题。
RestClient.post('http://localhost:3000/foo', :name_of_file_param => my_stream)