JHipster-Liquibase:如何上传图像文件blob?

时间:2018-05-22 14:47:38

标签: postgresql jhipster liquibase

给定一个包含以下列的表:

<column name="image" type="longblob">
    <constraints nullable="true" />
</column>
<column name="image_content_type" type="varchar(255)">
    <constraints nullable="true" />
</column>

如何从文件上传图片,例如MyImage.jpeg?底层数据库是PostgreSQL。

2 个答案:

答案 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>

希望它对某人有帮助!