2016-08-23 49 views
1

用戶可以通過UI上傳EDUPUB/Zip文件。我們希望實現一個REST api擴展模塊來將EDUPUB/Zip文件和攝入到MarkLogic數據庫中。 MarkLogic API API支持這個嗎?有什麼建議麼?是否可以通過Rest API擴展模塊將EDUPUB(如Zip文件)插入到marklogic數據庫中

我實現下面的代碼用於提取和上傳EDUPUB/Zip文件

xquery version "1.0-ml"; 
declare namespace zip="xdmp:zip"; 

declare function local:epubupload ($filepath as xs:string) 
{ 
let $get_document :=xdmp:document-get($filepath) 
let $get_uri := fn:document-uri($get_document) 
let $get_document_uri := fn:concat($get_uri, "/") 

let $get_collection := fn:tokenize($get_uri, "\\")[last()] 
let $epub_extract := xdmp:zip-manifest($get_document) 
for $each_file in $epub_extract/zip:part/text() 
let $document_data := xdmp:zip-get($get_document, $each_file) 
let $full_document_uri := fn:concat($get_document_uri, $each_file) 
return xdmp:document-insert($full_document_uri, $document_data,(), $get_collection) 
}; 
local:epubupload("c:\data\sample.epub") 

但對於REST API是什麼參數?以及如何從用戶系統獲取整個文件?

回答

2

如果您正在創建自己的REST擴展,那麼你可以使用上的zip有效載荷以下模式:

1次迭代使用xdmp:zip-manifest
2對於每個條目的zip文件,使用xdmp:zip-get提取文件
3通過xdmp:document-insert

它保存到MarkLogic根據您發佈的內容,xdmp:base64-decode可能是你的代碼的一部分,真正得到您的zip文件。

+0

感謝大衛的建議。 – Raj

相關問題