I was implementing some XQuery code for uploading a file and some form data. Fiddling with Multipart request and the http-client wasn't really usable, the http-client added some extra multipart content-type header and didn't work well. In the end I was implementing multipart requests manually:
As this is not usable for common users, I propose 2 changes:
1. the multipart implementation of the http client can be done in XQuery only (see example above) which would make this implementation more stable
2. a helper module where one just passes an html form and gets an http request for execution, for example:
I was implementing some XQuery code for uploading a file and some form data. Fiddling with Multipart request and the http-client wasn't really usable, the http-client added some extra multipart content-type header and didn't work well. In the end I was implementing multipart requests manually:
<http:body media-type = "multipart/ form-data; boundary= ------- ------- ------- ------- 6d6f6d615f08" method = "binary">{
"----- ------- ------- ------- ----6d6f6d615f0 8 & #10;",
'Content- Disposition: form-data; name="file"; filename= "test.jpg" &# 10;',
"Content- Type: multipart/ form-data& #13; ",
" ",
base64: decode( file:read- binary ($filename) )," ",
"----- ------- ------- ------- ----6d6f6d615f0 8 & #10;",
'Content- Disposition: form-data; name="descripti on" ',
" ",
"----- ------- ------- ------- ----6d6f6d615f0 8 & #10;",
'Content- Disposition: form-data; name="category" &# 10;',
" ",
"main& #13; ",
"----- ------- ------- ------- ----6d6f6d615f0 8-- "
concat (
"A test file ",
)
}</http:body>
As this is not usable for common users, I propose 2 changes:
1. the multipart implementation of the http client can be done in XQuery only (see example above) which would make this implementation more stable
2. a helper module where one just passes an html form and gets an http request for execution, for example:
html-forms: create- request( www.example. com/upload" method="post" enctype= "multipart/ form-data" >
<form action="http://
<input name="file" type="file" value="{$filename}" />
<input name="description" type="text" value="A test file">
<input name="category" type="text" value="main">
</form>
)