Hi Lars, You need to return a sequence of two items: (restxq:response,thedata) I do something like...
declare %rest:path("/download/{$file}") function page:download-file($file) { (download-response("raw",$file), file:read-binary(..)) };
(:~ headers for download :) declare function download-response($method,$filename){ restxq:response output:serialization-parameters <output:method value="{$method}"/> </output:serialization-parameters> http:response <http:header name="Content-Disposition" value='attachment;filename="{$filename}"'/> </http:response> </restxq:response> };
/Andy
On 21 August 2014 15:40, Lars Johnsen yoonsen@gmail.com wrote:
I came a little closer by making custom http:headers, but I have to confess I'm in deep water here:
declare %rest:path("/download/{$file}") function page:download-file($file) { rest:response <http:response status="200" message="OK">
<http:header name="Content-Disposition" value="Attachment"/>
<http:header name="filename" value="{$file}"/> </http:response> </rest:response>
};
This function do trigger a download of a file with the appropriate file name (=$file) containing the text OK. If I just could find somewhere in this code to put the contents of file, it should solve the problem.
Best, Lars
2014-08-21 15:20 GMT+02:00 Lars Johnsen yoonsen@gmail.com:
I am using BaseX restxq for accessing a repository from a web browser.
Uploading files works smoothly, but I can't see how to make a download button work. For uploading, the recipie on the restxq help page was enough to get it to work. Is there a corresponding way for making downloading work? What I have tried is to let BaseX send a html-page containing:
<form method="get" action="/download/{$file}"> <button type="submit">Download</button> </form>
To process this form is the following restfunction
declare %rest:path("/download/{$file}") %output:method("html") function page:download-file($file) { ... }
Inside the curly braces, I have tried an <a href..> element and file:read-binary, but none of them with any success. BaseX complains about the <a> element, and file:read-binary outputs directly to the browser.
Any suggestions?