elixir - 使用 Phoenix 从 ARC 上传读取二进制数据 -- db 仅显示文件名
问题描述
当我阅读我的用户时,我看到
%MyApp.Api.user{
profile_photo: %{
file_name: "2018-12-28 15:46:53.330536Z.png",
updated_at: ~N[2018-12-28 15:46:53]
},
}
但是在上传时我使用这个变更集:
def update_photo_changeset(user, attrs) do
user
|> cast(attrs[:user], [:profile_photo])
|> cast_attachments(attrs, [:profile_photo])
|> validate_required([:email, profile_photo])
end
记录 attrs 我可以看到二进制文件和文件名。当我阅读时,我只看到文件名。
如何直接读取二进制数据?
解决方案
Arc.File
是一个具有三个字段的结构。
Algebra.Inspect
,用于在控制台中表示文件,谨慎地忽略二进制垃圾。
%MyApp.Api.User{}.profile_photo
应该不是地图,而是%Arc.File{}
结构,我怀疑我能说出为什么它是一张光秃秃的地图。
在任何情况下,结构都有一个可直接访问的字段binary
:
%MyApp.Api.User{}.profile_photo.binary
推荐阅读
- r - 用两个平行的列名列表改变多列的整洁方法
- excel - vba - 多个条件的总和
- php - php中的字符串函数(str_replace)
- android - 如何在 Android Studio 中使用 Gradle 刷新依赖项(Gradle 窗口中缺少刷新按钮)
- powershell - 具有特殊字符的 Powershell 句柄变量(左括号)
- spring - 我们可以在高流量多租户云应用程序中使用休眠吗?
- java - 为什么我会收到此错误。请有人告诉我
- php - php格式日期转换成mysql格式插入
- angular - 如果 router.navigate 返回 false Angular,我如何路由到另一条路由
- forms - render() 得到了一个意外的关键字参数 'renderer' - DateTimePicker - Django 1.11 -> 3.1 迁移