在 Rails 5 中将 Formdata 转换为 jpeg 文件
Convert Formdata to jpeg file in Rails 5
我正在使用 React 前端和 Rails API,并且需要知道如何将在前端创建并附加了图像文件的表单数据转换为Rails 控制器中的 jpeg 文件。
到目前为止,我已经能够将表单数据路由到控制器,并且表单数据看起来像我的控制台中显示的那样:
{\"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 中使用回形针 gem。
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- 首先您必须创建物理文件以将其保存在您的数据库中,因此我在项目的 public 目录中创建了一个临时文件。
2- 只需使用临时文件路径将此文件写入数据库。然后删除这个临时物理文件。假设模型名称是 ExampleModel
并且有一个字段 paperclip 的字段 image
我正在使用 React 前端和 Rails API,并且需要知道如何将在前端创建并附加了图像文件的表单数据转换为Rails 控制器中的 jpeg 文件。
到目前为止,我已经能够将表单数据路由到控制器,并且表单数据看起来像我的控制台中显示的那样:
{\"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 中使用回形针 gem。
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- 首先您必须创建物理文件以将其保存在您的数据库中,因此我在项目的 public 目录中创建了一个临时文件。
2- 只需使用临时文件路径将此文件写入数据库。然后删除这个临时物理文件。假设模型名称是 ExampleModel
并且有一个字段 paperclip 的字段 image