在 Rails 5 中将 Formdata 转换为 jpeg 文件



我正在使用React前端和Rails API,并且需要知道如何将formdata转换为Rails控制器中的jpeg文件,该formdata是在前端创建的,并附加了图像文件。

到目前为止,我已经能够将表单数据路由到控制器,表单数据在我的控制台中如下所示:

{"file"=>#<ActionDispatch::Http::UploadedFile:0x00007f9e3227fb28 @tempfile=#<Tempfile:/var/folders/7j/pqx3w4t571s4hrmdwcq3v6tm0000gn/T/RackMultipart20180519-97088-172hrqu.jpeg>, @original_filename="big_facade.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"file\"; filename=\"big_facade.jpeg\"\r\nContent-Type: image/jpeg\r\n">, "format"=>:json, "controller"=>"api/v1/images/images", "action"=>"upload"}

根据我的研究,这是可能的,但现有的文献只是说这是可能的,没有描述如何。

有人可以指出我正确的方向或让我知道代码吗?

我在 Rails 中使用回形针宝石。

def create_file
unless params[:file].blank?
uploaded_io = params[:file]
path = Rails.root.join("public/system/temp_files/images", uploaded_io.original_filename)
File.open(path, 'wb') do |file|
file.write(uploaded_io.read)
end
if ExampleModel.create(image: Rails.root.join('public', path.to_s.split('/public/')[1]).open))
File.delete(path)
end
end
end

解释:-

1-首先,您必须创建物理文件才能将其保存在数据库中,因此在这里我在项目的公共目录中创建了一个临时文件。

2-只需使用临时文件路径将此文件写入数据库即可。 然后删除此临时物理文件。假设模型名称为ExampleModel,并且有一个字段回形针的字段image

最新更新