Jakob, That would be great. My situation is almost identical to yours. I'm using a third-party API (lulu.com) requiring multipart POSTs for uploading PDFs.
Thanks, Greg On Apr 20, 2011, at 4:16 PM, Jakob Fix wrote: > hi, > > for our project we send PDF files to scribd.com whose API also > required us to send multipart POST requests. Alex Bleasdale (of > MarkLogic) wrote an xquery library for us that allows us to do exactly > what I think you need to do. I don't think there are any problems > sharing this code, but I will check first. > > cheers, > Jakob. > > PS: the project will be presented at mluc11 next Wednesday. :) > > > > On Tue, Apr 19, 2011 at 22:40, Murray, Gregory <[email protected]> > wrote: >> On Apr 18, 2011, at 8:18 PM, Jason Hunter wrote: >> >>> There's nothing built into MarkLogic that writes the multipart/form-data >>> POST body for you. You're going to have to format the POST message >>> yourself according to RFC 1867 with things like the boundary lines and >>> content-type headers. >>> >>> (Note that if you do that, it'd be a great thing to add to the commons >>> shared code repository on developer.marklogic.com.) >>> >>> The complexity you're going to hit is how to send a binary file in the >>> middle of an otherwise text POST body. MarkLogic doesn't make that easy. >>> You can set a binary() node as the POST body, but for RFC 1867 you'll have >>> to construct that binary() node yourself from a sequence of strings >>> (boundary lines and headers) and raw bytes (actual payload). If you're >>> willing to base64 or hex encode the binary file as a string and decode it >>> on the server, then the MarkLogic side will be easy. It's just one big >>> string to manage. >>> >> >> I'd like to try that first, but how do I get the binary's base64-encoded >> value, when xdmp:base64-encode() only accepts a string? >> >>> But if you can't do that, how would you construct the single binary() node >>> that's the combination of strings surrounding another binary() node? The >>> nasty hack that I envision is you'd want to start with the string, get its >>> hex or base64 encoded value, append the binary's hex or base 64 encoded >>> value, then convert that encoded byte sequence back to a binary() and POST >>> that. >> >> If I have to resort to this, how do I convert the base64 string to a binary? >> >> Thanks, >> Greg >> >>> >>> -jh- >>> >>> On Apr 18, 2011, at 1:36 PM, Murray, Gregory wrote: >>> >>>> I need to send an HTTP POST where the data includes multiple string >>>> parameters but also a binary file. How can I do this kind of >>>> multipart/form-data POST using xdmp:http-post? >>>> >>>> Thanks, >>>> Greg >>>> >>>> Gregory Murray >>>> Digital Library Application Developer >>>> Princeton Theological Seminary >>>> >>>> _______________________________________________ >>>> General mailing list >>>> [email protected] >>>> http://developer.marklogic.com/mailman/listinfo/general >>> >>> _______________________________________________ >>> General mailing list >>> [email protected] >>> http://developer.marklogic.com/mailman/listinfo/general >> >> _______________________________________________ >> General mailing list >> [email protected] >> http://developer.marklogic.com/mailman/listinfo/general >> > _______________________________________________ > General mailing list > [email protected] > http://developer.marklogic.com/mailman/listinfo/general _______________________________________________ General mailing list [email protected] http://developer.marklogic.com/mailman/listinfo/general
