使用Phoenix从ARC上传中读取二进制数据-数据库仅显示文件名

时间:2018-12-28 15:52:17

标签: elixir phoenix-framework arc-ecto

当我阅读我的用户时,我看到了

%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我可以看到二进制文件和文件名。当我阅读时,只能看到文件名。

如何直接读取二进制数据?

1 个答案:

答案 0 :(得分:0)

Arc.File是具有三个字段的结构。

Algebra.Inspect(用于表示控制台中的文件)会谨慎地忽略二进制垃圾。

%MyApp.Api.User{}.profile_photo不应是地图,而应是%Arc.File{}结构,我怀疑我能说出为什么它是裸地图。

在任何情况下,该结构都有一个可直接访问的字段binary

%MyApp.Api.User{}.profile_photo.binary