On Nov 20, 2009, at 1:37 PM, Peter O. Ussuri wrote:
Hello!
This is in reply to Eric Uhrhane's message, and other discussions [1]
Various File API use cases discussed in this mailing list are
designed to illustrate some kind of expansion of existing browser
capabilities, with ensuing discussion of potential new security
risks. However, there is one quite general use case that is very
unlikely to introduce any additional security issues and that is
easy for everybody to understand (and for browser vendors to
implement).
I would like to suggest a "Group 0" File API use case, in Eric's
terminology.
Basically, there should be a way to do in JavaScript everything most
browsers currently in use (including IE6) do without server round-
trip. In the most general terms, it is currently possible, and
relatively secure, to let the user select a file for upload, upload
it to the server, do arbitrary processing, and then download/save
the (new/modified) file back onto the user's local file system.
The current File API draft lets a web app to read the file, but
there seems to be no easy way for a web app to construct an
arbitrary binary file and trigger a SaveAs/download dialog, with the
file name suggested by the app.
There is currently a way to do so being defined in the DataCache API
[1]. The API provides for ways to generate a response payload, just
like any http server could upon receiving an HTTP request. So you
could insert a link with some URL on the page and register an offline
handler for that URL. When the user clicks on that URL, it will call a
DataCache interceptor, which is basically a JS function, to produce a
response. If the MIME type of the generated response requires browser
to use an external app, then it could easily spawn a file save/
application open dialog just like in the case of file downloads.
The main idea here is to allow a "rich" client to be at least as
functional as a "poor" html+server app is (w/o any dynamic client-
side scripting). By recognizing this most basic use case, it will
probably be easier to agree on the first iteration of FileWriter
api, as most security issues have already been fleshed out.
Required api is quite simple to define and implement: a file builder
(similar to BlobBuilder in Google Gears), and a "SaveAs" method that
takes "pre-built" files (blobs). And later this basic API can be
extended to introduce an event model and cover more advanced use
cases.
Nikunj
http://o-micron.blogspot.com
[1] http://www.w3.org/TR/DataCache/