在Ruby on Rails中,我允许用户上传文件。我做了一些事情,然后将其通过obj = bucket.objects [filename] .write(request.body.read)传递给Amazon S3。
我以为可以使用request.body.read或request.raw_post,但是有效负载中包含所有这些元数据,例如Content-Disposition和Content-Type。我如何才能获得用户上传的有效负载部分?
例如,这是request.body.read,但我只希望该部分从“?‡?JFIF ...”开始
------WebKitFormBoundaryWc3LdZGmhHmhJeuT
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg
ˇÿˇ‡JFIFHHˇ·...
...more data...
------WebKitFormBoundaryWc3LdZGmhHmhJeuT--
您将在params中找到文件对象–对于您的情况,位于params[:file]
。
params
哈希中的对象是的子类的实例IO
。根据上载文件的大小,它可能是(StringIO
或File
)(临时文件)的实例。
在这两种情况下,对象都将具有一个original_filename
属性,该属性包含其在用户计算机上的文件名,以及一个content_type
属性,该属性包含上载文件的MIME类型。
要仅读取文件内容,只需调用read
。
uploaded_file = params[:file]
uploaded_file.original_filename
#=> test.jpg
uploaded_file.read
#=> file content ("ˇÿˇ‡JFIFHHˇ...")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句