Mik*_*Sax 5 ruby-on-rails rails-activestorage
如果我有一个在客户端上使用JavaScript编辑/生成的图像(例如,裁剪的照片或画布绘图的结果),是否可以使用ActiveStorage上传图像?
通常它是一个包含"<img src='data:image/jpeg;base64,...=='>"在JavaScript变量中而不是文件中的大字符串。
你可以这样做:
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)
有一个宝石可以做到这一点。
看看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)
据我所知,Active Storage 目前对此没有原生支持。
也许这个 Rails 问题有更多对您有帮助的信息。
我们已经使用 Shrine(及其DataURI 插件)实现了数据 URI 上传,并且正在等待,直到有适当的方法使用 Active Storage 来执行此操作,然后再进行迁移。
| 归档时间: |
|
| 查看次数: |
1500 次 |
| 最近记录: |