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

Re: File API Feedback

From: Arun Ranganathan <arun@mozilla.com>
Date: Tue, 21 Jul 2009 19:07:18 -0700
Message-ID: <4A667456.9010709@mozilla.com>
To: Michael Nordman <michaeln@google.com>
CC: public-webapps@w3.org
Michael Nordman wrote:
> On Tue, Jul 21, 2009 at 6:20 PM, Arun Ranganathan <arun@mozilla.com> wrote:
>> Michael Nordman wrote:
>>> The BlobBuilder.append() method is central to the use-case I'm referring
>>> to.
>>> builder.append(string data that comprises the multipart/form-data header);
>>> builder.append(string data that comprises simple text part);
>>> builder.append(string data that comprises the start of a binary part);
>>> builder.append(fileBlob); // the file itself
>>> builder.append(string data that closes the binary part);
>>> // perhaps more binary and text parts
>>> builder.append(string data that closes the multipart/form-data);
>>> multipartBlob = builder.getAsBlob();
>> OK, I understand your use case much better now :)
>> So, currently, we provide a fileData.getAsText(fileCallback, encoding,
>> error)
>> and
>> within fileCallback (a callback function) you can get the file's data as a
>> string (say a UTF-8 encoded string, or any encoding specified by
>> "encoding"); it is passed as an argument to fileCallback.
>> Then, you can append to the string (or prepend, in the case of the header)
>> using the standard JavaScript string methods.  And you can, of course, post
>> the string via XHR.
>> Along with a similarly asynchronous splice method to generate "ranged"
>> subsets of a FileData object, I think that we've got *most* of the features
>> exposed by both BlobBuilder and Blob.
> I don't follow... how would you use the FileData and XHR2 apis to do what I
> outlined with blob builder... can you show me in a similar amount of pseudo
> code?
Note that some things are possible already in Fx3.5.1 [1], but that when 
File API is released as spec., are likely to become deprecated (or at 
least, Fx-only).

For example:


shows what can be done currently with non-standard file APIs in Fx3.5.1, 
and XHR.

Calls of the sort:


are non-standard, but today, you can append or prepend to that string 
(or concatenate it) and then post it using XHR (xhr.send(string) ).  So 
you could add multipart/form-data headers and stuff (or multipart/mixed, 

My idea is:
var file = fileList.files.item(0);

if (file)
    // ... Make asynchronous call
    file.getAsText(handleText, "UTF-16", handleError);
    // ....

function handleText(fileAsUTF16)
       // append or prepend to the above string

      // use xhr.send(postString)

This still sends strings, but XHR 2[2] has got:

  void send(in ByteArray data);

which makes me think we need a binary getter as well :)

-- A*
[1] https://developer.mozilla.org/en/nsIDOMFile
[2] http://www.w3.org/TR/XMLHttpRequest2/#xmlhttprequest
Received on Wednesday, 22 July 2009 02:14:40 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 20 October 2015 13:55:28 UTC