Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby通过HTTP将文件流作为多部分/表单数据发布?_Ruby_Ruby On Rails 3_Filestream - Fatal编程技术网

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)