我正在尝试将图像发送到我的Rails应用,然后通过Active Storage存储它们。
我尝试了Base64并直接上传并进行了数小时的研究,但没有任何效果。
有人可以指出我的好方法吗?
我最后的尝试是像这样使用Base64:
def attach_preview
page = Page.first
content = JSON.parse(request.body.read)
decoded_data = Base64.decode64(content["file_content"].force_encoding("UTF-8"))
begin
file = Tempfile.new('test')
file.write decoded_data
#page.thumbnail = file
filename = "foooo"
page.thumbnail.attach(io: File.read(file), filename: filename)
if page.save
render :json => {:message => "Successfully uploaded the profile picture."}
else
render :json => {:message => "Failed to upload image"}
end
ensure
file.close
file.unlink
end
end
但这会导致"\xAB" from ASCII-8BIT to UTF-8 error.
真的不在乎它的Base64还是其他,我只需要一种方法:-)
答案 0 :(得分:0)
此方法有效,我直接使用IO
,因为无论如何ActiveStorage
都需要它。
def attach_thumbnail
content = JSON.parse(request.body.read.force_encoding("UTF-8"))
decoded_data = Base64.decode64(content["file_content"])
io = StringIO.new
io.puts(decoded_data)
io.rewind
@page.thumbnail.attach(io: io, filename: 'base.png')
@page.save
render json: {
success: @page.thumbnail.attached?,
thumbnail_url: url_for(@page.thumbnail),
page: @page
}
end