摘要:本文以用一個在數(shù)據(jù)庫中保存圖片信息為例展示如何向中插入二進(jìn)制數(shù)據(jù)首先我們要知道中唯一一種二進(jìn)制數(shù)據(jù)的類型為表示字節(jié)數(shù)組或字節(jié)序列對應(yīng)于和中的下面是一個示例遷移腳本這里也可以為實際上在執(zhí)行數(shù)據(jù)庫中字段的類型就是當(dāng)然除了圖片文件以外你還
本文以用一個在數(shù)據(jù)庫中保存圖片信息為例, 展示如何向 Postgresql 中插入二進(jìn)制數(shù)據(jù).
首先我們要知道 Postgresql 中唯一一種二進(jìn)制數(shù)據(jù)的類型為 bytea, 表示字節(jié)數(shù)組或字節(jié)序列. 對應(yīng)于Oracle和MySQL中的 blob.
下面是一個示例
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, 實際上在執(zhí)行 mix ecto.migrate 數(shù)據(jù)庫中:photo字段的類型就是:bytea add :photo, :bytea timestamps() end end end
當(dāng)然, 除了圖片文件以外, 你還可以存儲其他格式的二進(jìn)制文件, 比如Word文檔, PDF文檔等等.
實驗步驟mix phoenix.new bytea --no-brunch
創(chuàng)建項目, 提示下載依賴, 輸入 Y
mix compile
編譯項目
vi config/dev.exs
配置數(shù)據(jù)庫, 默認(rèn)生成的用戶名和密碼都是postgres,所以在測試的時候把你的數(shù)據(jù)庫用戶名和密碼設(shè)置成postgres是非常方便的.
mix ecto.setup
創(chuàng)建數(shù)據(jù)庫和表, 這個命令實際上是在mix.exs中定義的別名,包含多個子命令
iex -S mix phoenix.server
啟動測試
https://github.com/developerw...
測試的時候可以隨便找一個文件放到這個位置 "/tmp/FB7D22A5-924E-4DA5-AC93-5D815FA1AEA8.png"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38959.html
摘要:要解決的問題數(shù)據(jù)庫中存儲的行數(shù)超過了類型所能容納的數(shù)量因此需要采用類型的整數(shù)作為主鍵的取值范圍為到的取值范圍為到完整的字段的數(shù)據(jù)類型可以參考這里遷移腳本要點的參數(shù)要設(shè)置為通過宏指定主鍵列類型為模型的聲明要點主鍵要聲明為類型完 要解決的問題 數(shù)據(jù)庫中存儲的行數(shù)超過了 serial 類型所能容納的數(shù)量, 因此需要采用 bigserial 類型的整數(shù)作為主鍵serial 的取值范圍為: 1...
摘要:簡介數(shù)據(jù)格式空間數(shù)據(jù)的文本標(biāo)識空間數(shù)據(jù)的二進(jìn)制標(biāo)識基于對象表示法的地理空間信息數(shù)據(jù)交換格式的庫提供了上述三種格式的相互轉(zhuǎn)換函數(shù)配置添加依賴配置擴(kuò)展創(chuàng)建刪除擴(kuò)展的移植腳本腳本內(nèi)容執(zhí)行移植插入數(shù)據(jù)軌跡點粵獲取經(jīng)緯度粵查詢聯(lián)系如何查詢字段例 簡介 數(shù)據(jù)格式 Abbr Fullname Description WKT Well Known Text 空間數(shù)據(jù)的文本標(biāo)識 WKB ...
摘要:及其以上版本可以存儲類似這樣的非結(jié)構(gòu)化數(shù)據(jù)作為一個的數(shù)據(jù)封裝器提供了這些非結(jié)構(gòu)話的數(shù)據(jù)到原生數(shù)據(jù)類型的序列化和反序列化嵌入的記錄具有所有常規(guī)模型所具有的東西比如結(jié)構(gòu)化的字段生命周期回調(diào)變更集下面研究如何把結(jié)構(gòu)嵌入到模型當(dāng)中使用嵌入單個結(jié)構(gòu)可 Postgres 9.4 及其以上版本可以存儲類似 arrays, json, jsonb 這樣的非結(jié)構(gòu)化數(shù)據(jù). Ecto 作為一個 Elixir...
摘要:使用作為主鍵的目的降低類型這種自增線性特征作為隨機(jī)生成的字符串讓更離散增強(qiáng)系統(tǒng)的反爬蟲能力至少避免通過的線性增加來爬取內(nèi)容這種最簡單的爬取方式使用主鍵的是那種方式各有優(yōu)缺點可按實際需求自行權(quán)衡在應(yīng)用程序中生成并插入到數(shù)據(jù)庫通過使用擴(kuò)展自動生 使用UUID作為主鍵的目的 降低Serial類型這種自增ID線性特征, UUID作為隨機(jī)生成的字符串, 讓ID更離散, 增強(qiáng)系統(tǒng)的反爬蟲能力(至...
摘要:這個速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵的命令行的選擇器的屬性等,這個列表簡單收集了常用的工具,可以收藏用于平時的備忘錄,需要用到的時候可以及時查閱。 這個速查表主要是分享互聯(lián)網(wǎng)上一些比較常用的工具和技術(shù)常用內(nèi)容,如編輯器的快捷鍵、git的命令行、jQuery的API選擇器、CSS的flexbox屬性等,這個列表簡單收集了常用的工具,可以收藏用于平...
閱讀 638·2021-11-25 09:43
閱讀 1906·2021-11-17 09:33
閱讀 824·2021-09-07 09:58
閱讀 2062·2021-08-16 10:52
閱讀 482·2019-08-30 15:52
閱讀 1722·2019-08-30 15:43
閱讀 971·2019-08-30 15:43
閱讀 2922·2019-08-29 16:41