检索照片的GZIP -Rails Controller



im试图抓住一个包含照片的传入的GZIP文件,我想提取此GZIP,并为每张照片上传到S3。上传不是我的问题,我不确定如何正确解析传入的GZIP并获取照片。

这就是我在控制器中到目前为止所拥有的。

raw_gzip_file = request.raw_post
photos = Zlib::GzipReader.open(gzip_file)
photos.each{|photo| s3.upload(photo)}

然而,我收到的错误范围从(不隐含stringio转换为字符串)和(字符串包含null byte)

任何帮助或建议将不胜感激。

您可以使用open方法创建一个Gzipreader,该方法期望文件名或一个期望包含数据的IO的new方法。

raw_post返回字符串,因此您将实际的原始数据传递给了期望文件名的方法。您可以将其包装在Stringio中,然后使用open,但是request上已经有一种方法可以执行此操作(或者,如果尚未读取基础输入)

reader = Zlib::GzipReader.new(request.body)

这仅在身体确实包含GZIP数据时才正确。例如,如果请求是由浏览器提交带有文件输入表单的浏览器提出的,则文件数据将在params中,就像普通式form input一样(原始的帖子数据包含一个多部分MIME消息,Gzipreader将不会是能够处理)

完成了所有您将遇到的事实,即Ruby的GZIP库不支持单个存档中的多个文件(请参阅问题)。如果您可以让人们上传zip文件(可能更友好),那么Rubyzip Gem可以处理这些

最新更新