Elixir Ecto: 在Postgresql中插入二进制数据
首先我们要知道 Postgresql 中唯一一种二进制数据的类型为 下面是一个示例 defmodule Bytea.Model.Test do import Ecto.Changeset use Ecto.Schema alias Bytea.Repo schema "tests" do field :photo,:binary timestamps() end def changeset(struct,params %{}) do struct |> cast(params,[:photo]) |> validate_required([:photo]) end def insert(map) do Map.merge(%__MODULE__{},map) |> Repo.insert end def test_insert do {:ok,contents} = File.read("/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png") insert(%{photo: contents}) end end 迁移脚本 defmodule Bytea.Repo.Migrations.CreateTest do use Ecto.Migration def change do create table(:tests) do # 这里也可以为 :binary,实际上在执行 mix ecto.migrate 数据库中:photo字段的类型就是:bytea add :photo,:bytea timestamps() end end end 当然,除了图片文件以外,你还可以存储其他格式的二进制文件,比如Word文档,PDF文档等等. 实验步骤
示例地址https://github.com/developerw... 测试的时候可以随便找一个文件放到这个位置 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |