- From: Nikunj R. Mehta <nikunj.mehta@oracle.com>
- Date: Wed, 19 Aug 2009 12:04:32 -0700
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Webapps WG <public-webapps@w3.org>
Hi Jonas,
I am afraid that this proposal doesn't actually improve upon the
editor's draft in a meaningful way.
There are concepts here that are completely unrelated to file access
such as status and readyState. There seems to be little to no benefit
in introducing attributes just so that it is similar to XHR when your
analysis [1] shows that only two codes are sufficient in the case of
files! Perhaps, I am also biased (like Anne) and don't like File
access to be matched to XHR.
Another issue I have is that as opposed to XHR, File API access does
have the notion of incremental processing. Moreover, it has no notion
of headers. Therefore, readyState makes no sense. Finally, the
FileRequest interface below is a monolith, and it would require
evolution that is not easily decentralizable because the request is
not actually a request but a factory for causing a request. See my
alternative proposal for how to improve on this.
Nikunj
http://o-micron.blogspot.com
[1] http://www.w3.org/mid/63df84f0908181808t19282d0bs4d227f2c04616dba@mail.gmail.com
On Aug 11, 2009, at 7:20 PM, Jonas Sicking wrote:
> Here is an alternative proposal for an API for reading files:
>
> [Constructor, Implements=EventTarget]
> interface FileRequest {
> readAsBinaryString(in FileData filedata);
> readAsText(in FileData filedata, [Optional] in DOMString);
> readAsDataURL(in File file);
>
> abort();
>
> const unsigned short INITIAL = 0;
> const unsigned short LOADING = 1;
> const unsigned short DONE = 2;
> readonly attribute unsigned short readyState;
>
> readonly attribute DOMString response;
> readonly attribute unsigned long status;
>
> attribute Function onloadstart;
> attribute Function onprogress;
> attribute Function onload;
> attribute Function onabort;
> attribute Function onerror;
> attribute Function onloadend;
> };
>
> Additionally, inside DOM Workers we could supply the following
> interface:
>
> [Constructor]
> interface FileRequestSync {
> DOMString readAsBinaryString(in FileData filedata);
> DOMString readAsText(in FileData filedata, [Optional] in DOMString);
> DOMString readAsDataURL(in File file);
> };
>
> As stated, I'm not convinced that this is a better solution than what
> the spec currently does. The only advantage I can see is that it
> supports progress events without requiring the use of XMLHttpRequest,
> and the downside is that it's a significantly bigger API. Usage
> examples would be:
>
> Current draft:
> myFile.getAsBinaryString(handler);
> function handler(data, error) {
> doStuffWith(data);
> }
>
> Above API:
> reader = new FileReader;
> reader.readAsBinaryString(myFile);
> reader.onload = handler;
> function handler(event) {
> doStuffWith(event.target.response);
> }
>
> I'd be interested in feedback from others, especially from people that
> so far hasn't spoken up.
>
> / Jonas
>
Received on Wednesday, 19 August 2009 19:07:04 UTC