Как загрузить и сохранить изображение с помощью eXist-db?

Я пытаюсь загрузить изображение и сохранить его в существующей базе данных, но при открытии сохраненного изображения я получаю следующую ошибку:

Cannot open specified file: Could not recognize image encoding.

Я попробовал следующий код с небольшой настройкой для обычных файлов txt, и он отлично работает, но не с изображениями.

picture.xhtml

<?xml-model href="http://www.oxygenxml.com/1999/xhtml/xhtml-xforms.nvdl" schematypens="http://purl.oclc.org/dsdl/nvdl/ns/structure/1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:ev="http://www.w3.org/2001/xml-events" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xf="http://www.w3.org/2002/xforms" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <head>
        <title/>
        <xf:model>
            <xf:instance xmlns="">
                <data>
                    <image xsi:type="xs:base64Binary"/>
                </data>
            </xf:instance>
            <xf:submission id="save" action="save.xquery" method="post"/>
        </xf:model>
    </head>
    <body>
        <xf:upload ref="image">
            <xf:label>Upload Photo:</xf:label>
        </xf:upload>
        <br/>
        <xf:submit submission="save">
            <xf:label>Save</xf:label>
        </xf:submit>
    </body>
</html>

сохранить.xquery

xquery version "3.1";

declare option exist:serialize "method=xhtml media-type=text/html indent=yes";

let $login:=xmldb:login('xmldb:exist:///db/apps/places','admin','admin')

(: The small adjusment i refer is just to change file extension from .jpeg to .txt :)
return xmldb:store("/db/apps/places/",concat("pic",".jpeg"), util:base64-decode(request:get-data()//image))

person Elkin    schedule 05.06.2017    source источник
comment
Я предлагаю написать в список рассылки betterform-user lists.sourceforge.net/lists/ listinfo/betterform-users.   -  person Joe Wicentowski    schedule 05.06.2017


Ответы (1)


Если вы хотите хранить изображения в базе данных eXist, вам, вероятно, следует заменить xmldb:store() на xmldb:store-as-binary().

person pstadler    schedule 22.11.2017