ActiveStorage上传大的base64编码字符串?

Mik*_*Sax 5 ruby-on-rails rails-activestorage

如果我有一个在客户端上使用JavaScript编辑/生成的图像(例如,裁剪的照片或画布绘图的结果),是否可以使用ActiveStorage上传图像?

通常它是一个包含"<img src='data:image/jpeg;base64,...=='>"在JavaScript变量中而不是文件中的大字符串。

Die*_*ion 9

你可以这样做:

decoded_data = Base64.decode64(params[:base64].split(',')[1])
resource.image = { 
  io: StringIO.new(decoded_data),
  content_type: 'image/jpeg',
  filename: 'image.jpg'
}
Run Code Online (Sandbox Code Playgroud)


Pau*_*oor 6

有一个宝石可以做到这一点。

看看https://github.com/rootstrap/active-storage-base64

安装 gem 后就非常简单了。

class User < ActiveRecord::Base
  include ActiveStorageSupport::SupportForBase64
end


class User < ApplicationRecord
  has_one_base64_attached :avatar
end
Run Code Online (Sandbox Code Playgroud)

分配给模型的实例是通过以下方式完成的:

base64 = 'data:image/png;base64,[base64 data]'
user.avatar = {data: base64}
Run Code Online (Sandbox Code Playgroud)


cse*_*lus 1

据我所知,Active Storage 目前对此没有原生支持。

也许这个 Rails 问题有更多对您有帮助的信息。

我们已经使用 Shrine(及其DataURI 插件)实现了数据 URI 上传,并且正在等待,直到有适当的方法使用 Active Storage 来执行此操作,然后再进行迁移。