- From: Arun Ranganathan <arun@mozilla.com>
- Date: Tue, 21 Jul 2009 19:07:18 -0700
- 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:
http://hacks.mozilla.org/2009/06/xhr-progress-and-richer-file-uploading-feedback/
shows what can be done currently with non-standard file APIs in Fx3.5.1,
and XHR.
Calls of the sort:
file.getAsText("utf8")
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,
etc.).
My idea is:
var file = fileList.files.item(0);
if (file)
{
// ... Make asynchronous call
file.getAsText(handleText, "UTF-16", handleError);
// ....
}
function handleText(fileAsUTF16)
{
if(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