给定一个包含以下列的表:
<column name="image" type="longblob">
<constraints nullable="true" />
</column>
<column name="image_content_type" type="varchar(255)">
<constraints nullable="true" />
</column>
如何从文件上传图片,例如MyImage.jpeg?底层数据库是PostgreSQL。
答案 0 :(得分:2)
以下changeSet可以满足我的需求:
<changeSet id="632342634534534e53" author="developer">
<update schemaName="public"
tableName="my_table">
<column name="image" type="longblob" valueBlobFile="../../../images/1.MyImage.jpg"/>
<column name="image_content_type" type="varchar(255)" value="image/jpeg"/>
<where>id = 1</where>
</update>
</changeSet>
这是图像的路径:
/src/main/resources/images
这是changelog的路径:
/src/main/resources/config/liquibase/changelog/MyChangelog.xml
答案 1 :(得分:0)
我有一个类似的问题,但就我而言,只要列类型是OID而不是Blob(postgres 12.x),就无法解决公认的解决方案
因此,我最终得到了下面的解决方案,该解决方案使用了CalculationValue和postgres的函数将Base64图像转换为OID。
<insert tableName="IMAGES">
<column name="image_id" valueSequenceNext="image_id_seq"/>
<column name="name" value="some image name"/>
<column name="content" valueComputed="lo_from_bytea(0, decode('DLxmEfVUC9CAmjiNyVphWw==', 'base64'))"/>
</insert>
希望它对某人有帮助!