using http-client to execute an html form

Bug #996793 reported by Dennis Knochenwefel
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Zorba
New
Medium
Matthias Brantner

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&#13;&#10;",
        'Content-Disposition: form-data; name="file";',
        ' filename="test.jpg"&#13;&#10;',
        "Content-Type: multipart/form-data&#13;&#10;",
        "&#13;&#10;",
        base64:decode(file:read-binary ($filename)),"&#13;&#10;",
        "----6d6f6d615f08&#13;&#10;",
        'Content-Disposition: form-data; name="description"&#13;&#10;',
        "&#13;&#10;",
        "A test file&#13;&#10;",
        "----6d6f6d615f08&#13;&#10;",
        'Content-Disposition: form-data; name="category"&#13;&#10;',
        "&#13;&#10;",
        "main&#13;&#10;",
        "----6d6f6d615f08--&#13;&#10;"
      )
}</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>
  )
)

tags: added: new-functionality-requirement
description: updated
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.