immedate upload

Today I accepted  Action 2009-10-28.5 to show how to do "immediate 
upload" in XForms 1.1, with an eye towards gap analysis and possible 
syntactic sugar.  This message completes the action.

*Summary: *
In summary, this method works, but has some constraints, described below 
in "Gap Analysis."

*Detailed Results:*
I have completed a working round-trip example using Mozilla XForms.
 
When you select a local file with the upload control, the 
xforms-value-changed event causes a submission to send the image (from a 
second instance) to the server.  On xforms-submit-done, the XML data 
from the submission is expected to contain the server-side URI for the 
image.  An xf:setvalue copies this value into the main instance, from 
where it is displayed with xf:output/@mediatype='image/*'.

Feel free to try it out:

  
http://xformstest.org/klotz/2009/10/immediate-upload/immediate-upload.xhtml

For simplicity and security, the test upload resource on the server does 
not do anything with the uploaded image, and always returns the same 
static URI for the icon resource.

*Gap Analysis:*
Instead of relying on the server to have a script which accepts the 
image and returns properly formatted XML, it would be nice to use the 
native HTTP PUT to store data, and obtain the new resource URI from the 
Location header defined in HTTP PUT in
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30 as follows:

  <submission id="put-icon" method="put" action="..." serialization="image/png" ref="instance('icons')/icon" replace="none">
    <action ev:event="xforms-submit-done">
         <setvalue ref="instance('main')/entry/icon" value="event('response-headers')/header[name='Location']/value" />
    </action>
  </submission>

Additionally, it would be nice to use the mediatype from the upload 
itself for the value of serialization, again not something supported in 
XForms 1.1:

   <upload ref="instance('icons')/icon">
        <mediatype ref="@mediatype" />
        <label>Icon: </label>
        ...
   </upload>

   <submission ...>
         ...
       <serialization value="instance('icons')/icon/@mediatype" />
   </submission>


*Syntactic Sugar*
It might be nice to provide syntactic sugar for some of these 
operations, should they prove common.  Further discussion is necessary.

Leigh.

Received on Wednesday, 28 October 2009 17:42:06 UTC