On Aug 18, 2009, at 11:50 AM, Jonas Sicking wrote:

On Tue, Aug 18, 2009 at 10:34 AM, Nikunj R.
Mehta<nikunj.me...@oracle.com> wrote:

On Aug 17, 2009, at 11:29 PM, Jonas Sicking wrote:

On Mon, Aug 17, 2009 at 11:13 PM, Nikunj R.
Mehta<nikunj.me...@oracle.com> wrote:

On Aug 17, 2009, at 11:08 PM, Jonas Sicking wrote:

On Mon, Aug 17, 2009 at 6:01 PM, Arun Ranganathan<a...@mozilla.com>
wrote:

Nikunj R. Mehta wrote:

On Aug 5, 2009, at 6:55 PM, Jonas Sicking wrote:

What's the use-case for getAsBase64?


I have another use case for this. The Atom Publishing protocol per RFC 5023 [1] accepts inline binary data represented in base 64 encoding.
In
order to submit binary inline content in an Atom entry to an Atom
server, it
would be necessary to getAsBase64()

Specifically, atom:entry can contain Base64-encoded content [2]; I'm
not
sure it allows *other ways* to submit inline binary content. I suppose
one
reason to keep the ability to get data in Base64 is for legacy reasons, since it happens to be a convenient way to get binary stuff into web
content
(and ultimately onto servers). The problem is that it is not as useful within webapps (at least, not as useful as binary content). Use cases submitted till now involve *submitting* binary content in Base64 to
servers
that can handle Base64, but not doing anything useful with Base64
*within*
the web app (where I suspect the first thing someone might do is to
convert
it to a binary string again).

I suppose one reason to keep it around is if:

1. Web app asks user to pick file
2. File is picked and extracted as Base64
3. Atom "container" with Base64 is submitted via XHR using the Atom
Publishing Protocol [1].

I'm willing to keep a way to get data as Base64 around for such cases.

There's lots of formats used on the web, I don't think it makes sense
to add file-getters for all of them. JSON has gotten a lot of
attention lately, does this mean we should add a getter that return a
js-style escaped string?

We have getAsBinaryString, using that you can get the raw data and
then base64 or escape encode it, or convert it to whatever format you
want.

/ Jonas


An IETF working group has published standards track proposals for a
format
and a protocol that uses base 64 encoding. If this is not sufficient
reason,
then I am sorry but you have an unduly high expectation. Let the
'js-style
escaped string' get a similar blessing and then they can bring it to W3C
to
include them in browsers.

Note that base64 is still supported, I just don't think adding a
convenience function on the File API is warranted.

I don't understand by what you mean that it is supported. Can you elaborate?

I mean that it's possible to use the current (minus getAsBase64) API
to send base64 encoded data to the server. You can do that in the
following way:

file.getAsBinaryString(handler);
function handler(binaryString, err) {
 encodedString = base64Encode(binaryString);
 xhr.open("POST", "server.cgi");
 xhr.send(encodedString);
}

function base64Encode(binaryString) {
 ... code from [1] ...
}

[1] http://www.webtoolkit.info/javascript-base64.html

So we don't need an explicit base64 getter on the file API in order to
allow data to be converted into base64.

So it is possible to do encoding, except that it is not offered in the API. Regardless, I feel that the use of binary strings and doing the encoding in JavaScript is a bad approach and this spec should not move programmers in that direction.

I think it is probably best to provide separate readers for each different format - binary, encoded binary, and text. I feel that Michael's proposal is better than the current editor's draft in that it clearly separates the file from its readers and the data.


If we did,
shouldn't we also add a base64 encoding function on XMLHttpRequest?
the SQL (or other database) API? On postMessage?

And then multiply that by the number of IETF blessed encodings? That
adds up to a lot of API.

If base64 is important enough that we should have built-in support for
it, it seems better to support that separated from the File API so
that it can be used with other data sources than files.

Perhaps you are suggesting that a file reader should support taking encoding as an option so that the reader can obtain whatever format it is interested in as long as the browser supports it. That would keep the API clean. If so,
I would suggest that base64 be a required encoding.

No, I'm suggesting that we decouple APIs that do encoding/decoding,
from APIs that deal with specific data sources. Otherwise we need to
add encoding/decoding APIs on each data source. So if we consider
base64 encoding to be critical, lets add a native API to implement the
base64Encode function in the example above.


This I agree will be a step in the right direction. It seems you are suggesting something similar to Java's InputStreamReader so that the bytes can be converted to characters using a controlled decoding mechanism.

/ Jonas


Nikunj
http://o-micron.blogspot.com




Reply via email to