- From: Leigh L. Klotz, Jr. <Leigh.Klotz@Xerox.com>
- Date: Wed, 28 Oct 2009 10:41:37 -0700
- To: public-forms@w3.org
- Message-ID: <4AE88251.8080307@Xerox.com>
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