dba/files  library module
R

Summary

Download file.
Authors
  • Christian Grün, BaseX Team 2005-23, BSD License
Related documents
ViewDescriptionFormat
xqdocxqDoc xml file from the source modulexml
xqparsexqparse xml file from the source modulexml

Imports

This module is imported by 0 modules. It imports 1 modules.

(None)
imports
dba/files
imports

Variables

None

Functions

4.1 dba:file-download

Arities: #1R

Summary
Downloads a file.
Signatures
dba:file-download ( $name as xs:string ) as item()+
Parameters
  • name as xs:string name of file
Return
  • item() + binary data
Invoked by 0 functions from 0 modules
    Annotations (2)
    %rest:GET()
    %rest:path('/dba/file/{$name}')
    Source ( 12 lines)
    function dba:file-download(
      $name  as xs:string
    ) as item()+ {
      let $path := config:directory() || $name
      return (
        web:response-header(
          map { 'media-type': 'application/octet-stream' },
          map { 'Content-Length': file:size($path) }
        ),
        file:read-binary($path)
      )
    }

    Namespaces

    The following namespaces are defined:

    PrefixUri
    configdba/config
    dbadba/files 2 3 4 5 6 7 8
    filehttp://expath.org/ns/file
    resthttp://exquery.org/ns/restxq
    webhttp://basex.org/modules/web
    xshttp://www.w3.org/2001/XMLSchema

    6 RestXQ

    Paths defined 1.

    PathMethodFunction
    /dba/file/{$name}GETdba:file-download#1

    Source Code

    (:~
     : Download file.
     :
     : @author Christian Grün, BaseX Team 2005-23, BSD License
     :)
    module namespace dba = 'dba/files';
    
    import module namespace config = 'dba/config' at '../lib/config.xqm';
    
    (:~
     : Downloads a file.
     : @param  $name  name of file
     : @return binary data
     :)
    declare
      %rest:GET
      %rest:path('/dba/file/{$name}')
    function dba:file-download(
      $name  as xs:string
    ) as item()+ {
      let $path := config:directory() || $name
      return (
        web:response-header(
          map { 'media-type': 'application/octet-stream' },
          map { 'Content-Length': file:size($path) }
        ),
        file:read-binary($path)
      )
    };