zorba-coders team mailing list archive
-
zorba-coders team
-
Mailing list archive
-
Message #09378
[Bug 996793] Re: using http-client to execute an html form
** Description changed:
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">{
- concat (
- "------------------------------6d6f6d615f08 ",
- 'Content-Disposition: form-data; name="file"; filename="test.jpg" ',
- "Content-Type: multipart/form-data ",
- " ",
- base64:decode(file:read-binary ($filename))," ",
- "------------------------------6d6f6d615f08 ",
- 'Content-Disposition: form-data; name="description" ',
- " ",
- "A test file ",
- "------------------------------6d6f6d615f08 ",
- 'Content-Disposition: form-data; name="category" ',
- " ",
- "main ",
- "------------------------------6d6f6d615f08-- "
- )
+ <http:body media-type="multipart/form-data; boundary=--6d6f6d615f08"
+ method="binary">{
+ concat (
+ "----6d6f6d615f08 ",
+ 'Content-Disposition: form-data; name="file";',
+ ' filename="test.jpg" ',
+ "Content-Type: multipart/form-data ",
+ " ",
+ base64:decode(file:read-binary ($filename))," ",
+ "----6d6f6d615f08 ",
+ 'Content-Disposition: form-data; name="description" ',
+ " ",
+ "A test file ",
+ "----6d6f6d615f08 ",
+ 'Content-Disposition: form-data; name="category" ',
+ " ",
+ "main ",
+ "----6d6f6d615f08-- "
+ )
}</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(
- <form action="http://www.example.com/upload"; method="post" enctype="multipart/form-data">
- <input name="file" type="file" value="{$filename}" />
- <input name="description" type="text" value="A test file">
- <input name="category" type="text" value="main">
- </form>
+ http-client:send-request(
+ html-forms:create-request(
+ <form action="http://www.example.com/upload";
+ method="post"
+ enctype="multipart/form-data">
+ <input name="file" type="file" value="{$filename}" />
+ <input name="description" type="text" value="A test file">
+ <input name="category" type="text" value="main">
+ </form>
+ )
)
--
You received this bug notification because you are a member of Zorba
Coders, which is the registrant for Zorba.
https://bugs.launchpad.net/bugs/996793
Title:
using http-client to execute an html form
Status in Zorba - The XQuery Processor:
New
Bug description:
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">{
concat (
"----6d6f6d615f08 ",
'Content-Disposition: form-data; name="file";',
' filename="test.jpg" ',
"Content-Type: multipart/form-data ",
" ",
base64:decode(file:read-binary ($filename))," ",
"----6d6f6d615f08 ",
'Content-Disposition: form-data; name="description" ',
" ",
"A test file ",
"----6d6f6d615f08 ",
'Content-Disposition: form-data; name="category" ',
" ",
"main ",
"----6d6f6d615f08-- "
)
}</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:
http-client:send-request(
html-forms:create-request(
<form action="http://www.example.com/upload";
method="post"
enctype="multipart/form-data">
<input name="file" type="file" value="{$filename}" />
<input name="description" type="text" value="A test file">
<input name="category" type="text" value="main">
</form>
)
)
To manage notifications about this bug go to:
https://bugs.launchpad.net/zorba/+bug/996793/+subscriptions
References