Thanks a lot Andy! It works like a charm. Now the filename can be manipulated as well. Perfect!
Best, Lars 2014-08-21 17:10 GMT+02:00 Andy Bunce <bunce.a...@gmail.com>: > > 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 <yoon...@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 <yoon...@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? >>> >>> >>> >> >