[MarkLogic Dev General] Retrieving file name/document URI of binary content
Amar Wakkar
amar_wakkar at hotmail.com
Mon Nov 14 12:20:56 PST 2011
Ok I let me give that a go as well...
From: dlee at epocrates.com
To: general at developer.marklogic.com
Date: Mon, 14 Nov 2011 19:59:52 +0000
Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of binary content
You may find the MarkLogic extension to xmlsh more useful to you then writing pure java code. Its written in Java using XCC so is as efficient as java directly
but vastly easier to program/script (IMHO) as you dont have to do all the java thingies.
http://www.xmlsh.org/ModuleMarkLogic
----------------------------------------
David A. Lee
Senior Principal Software Engineer
Epocrates, Inc.
dlee at epocrates.com
812-482-5224
From: Lee, David
Sent: Monday, November 14, 2011 2:57 PM
To: general at developer.marklogic.com
Subject: RE: [MarkLogic Dev General] Retrieving file name/document URI of binary content
You can return them as pairs in a sequence
for $x in collection("user10")
return
( fn:document-uri($x) , $x )
Not sure why the XCC code isnt returning the document-uri but it might not know it )
----------------------------------------
David A. Lee
Senior Principal Software Engineer
Epocrates, Inc.
dlee at epocrates.com
812-482-5224
From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com]
On Behalf Of Amar Wakkar
Sent: Monday, November 14, 2011 2:42 PM
To: general at developer.marklogic.com
Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of binary content
Hello David,
No luck, I am getting following error when I try your suggestion:
com.marklogic.xcc.exceptions.XQueryException: XDMP-TOOFEWARGS: (err:XPST0017) fn
:document-uri() -- Too few args, expected 1 but got 0
[Session: user=user, cb=XCCTestDB [ContentSource: user=user, cb=XCCTestDB [prov
ider: address=localhost/127.0.0.1:8006, pool=1/64]]]
[Client: XCC/4.2-7, Server: XDBC/5.0-1]
in /eval, on line 1
expr: fn:document-uri()
at com.marklogic.xcc.impl.handlers.ServerExceptionHandler.handleResponse
(ServerExceptionHandler.java:30)
at com.marklogic.xcc.impl.handlers.EvalRequestController.serverDialog(Ev
alRequestController.java:78)
at com.marklogic.xcc.impl.handlers.AbstractRequestController.runRequest(
AbstractRequestController.java:78)
at com.marklogic.xcc.impl.SessionImpl.submitRequest(SessionImpl.java:268
)
Basically I want to be able to get images stored in Marklogic server back on a JSP page in an <img> tag. So far, I can get the html content upto
the JSP page, however to render image, I want to be able to use the same name used while storing the image in Marklogic database e.g. image1,2,3 etc as document URI.
I tried following in QConsole which works but there are two problems with it:
for $x in collection("user10")
return
fn:document-uri($x)
Problem:1 :
It retrieves only the file names so I will have to write one query to get the content and other query to get the file names, that does not sound
quite right.
Problem:2:
Even if problem-1 is not an issue, how do I get it to work from Java code? Should I copy these lines in a .xqy module/page and invoke it somehow
from JSP?
Is there any better way to get image and it's document-uri in one go from Marklogic. I stored them as binary instances when creating content. I am
using Marklogic-5.
Thanks
Amaresh Wakkar
From: dlee at epocrates.com
To: general at developer.marklogic.com
Date: Mon, 14 Nov 2011 15:08:19 +0000
Subject: Re: [MarkLogic Dev General] Retrieving file name/document URI of binary content
Try this:
Request request = session.newAdhocQuery(" collection('imageCollection')/document-uri() ");
----------------------------------------
David A. Lee
Senior Principal Software Engineer
Epocrates, Inc.
dlee at epocrates.com
812-482-5224
From: general-bounces at developer.marklogic.com [mailto:general-bounces at developer.marklogic.com]
On Behalf Of Amar Wakkar
Sent: Monday, November 14, 2011 9:27 AM
To: general at developer.marklogic.com
Subject: [MarkLogic Dev General] Retrieving file name/document URI of binary content
Dear all,
I am learning ways of doing things in Marklogic server. I have managed to save a collection to Marklogic server which consists of few .gif images.
The document URI's are the actual file names when I stored them in collection e.g. image1, image2 etc..The collection is named "imageCollection". I can query for "imageCollection" and it does return 3 images in result set. Unfortunately, I am unable to figure
out how to get "file name" or Document URI of these images ?
createOptions = ContentCreateOptions.newBinaryInstance();
createOptions.setCollections(new String[]{"imageCollection"});
createOptions.setFormatBinary();
content = ContentFactory.newContent(someContent.getAttachmentsFileNames()[i], someContent.getAttachments()[i], createOptions);
System.out.println("Inserting contents..");
session.insertContent(content);
The call to
Request request = session.newAdhocQuery(" collection(\"imageCollection\") ");
ResultSequence rs = session.submitRequest(request);
while(rs.hasNext()){
System.out.println("Inside contentDao 44444444");
ResultItem item = rs.next();
Following call returns null
System.out.println(item.getDocumentURI());
Please help me understand how to get the file names of the images so that I can use them to render back on screen.
Thanks
Amaresh Wakkar
_______________________________________________ General mailing list General at developer.marklogic.com http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
General at developer.marklogic.com
http://developer.marklogic.com/mailman/listinfo/general
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://developer.marklogic.com/pipermail/general/attachments/20111114/59021a73/attachment-0001.html
More information about the General
mailing list