W3C home > Mailing lists > Public > public-webapps@w3.org > July to September 2008

Re: Proposal for an extension XMLHttpRequest to allow sending files

From: Sam Weinig <weinig@apple.com>
Date: Thu, 17 Jul 2008 13:46:10 -0700
Cc: Web Applications Working Group WG <public-webapps@w3.org>
Message-Id: <110610D6-6DB8-4D25-BAA0-84FE294F5088@apple.com>
To: Aaron Boodman <aa@google.com>

Not exactly.  This Gears proposal introduces an extra level of  
indirection with Blobs that this proposal does not.  This can be seen  
as a subset, that Blobs could build on in the future, and in fact is  
entirely compatible with the Gears proposal.


On Jul 17, 2008, at 1:23 PM, Aaron Boodman wrote:

> Is the only difference from the Gears proposal the name of the object
> ("File") and the lack of reading APIs initially?
> - a
> On Thu, Jul 17, 2008 at 1:14 PM, Sam Weinig <weinig@apple.com> wrote:
>> We would like to propose standardizing a way of using  
>> XMLHttpRequest to send
>> files to the server.  We propose using a similar (and compatible)  
>> API to the
>> Blob based API proposed by Google Gears
>> (http://code.google.com/p/gears/wiki/BlobWebAPIPropsal), but  
>> instead of
>> sending Blob objects, the File objects would be sent.  This will  
>> allow the
>> common act of uploading files, now relegated to form submissions  
>> with an
>> <input type="file">, to have access to ProgressEvents and the  
>> ability to
>> abort mid way through.
>> As with the Blob API, this is reuses the File and FileList interfaces
>> exposed by Mozilla
>> (see http://developer.mozilla.org/en/docs/nsIDOMFile and http://developer.mozilla.org/en/docs/nsIDOMFileList)
>> in a compatible.  We are not proposing a specific way to get the  
>> contents of
>> the files, but that would be a natural future extension.  Other  
>> potential
>> future extensions would be access to the icon associated with the  
>> file.
>> Objects implementing the HTMLInputElement interface must also  
>> implement the
>> FileHTMLInputElement interface.
>> interface FileHTMLInputElement {
>>   readonly attribute FileList files;
>> };
>> The files attribute must return a FileList containing all the files
>> currently selected.  This list is live, and therefore updates if  
>> contents of
>> the input element change.
>> interface FileList {
>>   readonly attribute unsigned long length
>>   [IndexGetter] File item(in unsigned long index);
>> };
>> Each item in the FileList is File, which is a token representation  
>> of file
>> on the system.  The fileName attribute returns just the name and  
>> not the
>> complete path.  The fileSize attribute returns the size of the file  
>> in
>> bytes.
>> interface File {
>>   readonly attribute DOMString fileName;
>>   readonly attribute unsigned long long fileSize;
>> };
>> Sending a File can be accomplished with an extension to  
>> XMLHttpRequest that
>> overrides the existing send() method.
>> Objects implementing the XMLHttpRequest interface must also implement
>> the FileXMLHttpRequest interface.
>> interface FileXMLHttpRequest {
>>   void send(File data);
>> };
>> -Sam Weinig
Received on Thursday, 17 July 2008 20:46:50 UTC

This archive was generated by hypermail 2.3.1 : Friday, 27 October 2017 07:26:11 UTC