[whatwg] HTMLCanvasElement.toFile()

Maciej Stachowiak mjs at apple.com
Thu Jan 7 14:22:35 PST 2010


On Jan 7, 2010, at 11:41 AM, Jonas Sicking wrote:

> Hi web fans,
>
> So at mozilla we've been implementing and playing around with various
> File APIs lately. One of the most common use cases today for file
> manipulation is photo uploaders. For example to sites like flickr,
> facebook, twitpic and icanhascheezburger. Some of these sites allow
> additional modifications of the uploaded image, most commonly cropping
> and rotating the image. But even things like manipulating colors,
> adding text, and red eye reduction are things that sites do, or would
> like to do.
>
> We do already have a great tool for image manipulation in HTML, the
> canvas element. However if a site wants to upload the resulting image,
> after the modifications, things become more painful. Currently you
> have to call toDataURL(), send that URL using XMLHttpRequest, and then
> serverside convert to binary data. Things will be a little better once
> XHR supports sending manually constructed binary data, but you still
> have to manually convert the data url to binary data in javascript.
>
> I suggest we add a function like:
>
> File toFile(in DOMString name, in optional DOMString type, in any...  
> args);
>
> This function takes the same arguments as toDataURL(), plus an
> additional 'name' argument. It produces the same result as
> toDataURL(), except that it returns the result as a File object rather
> than as a data-url encoded string. This can then be directly sent
> using XMLHttpRequest.

I think it would make more sense to have an actual type for binary  
data (for example along the lines of my proposal on public-script- 
coord and es-discuss) and enable getting one from <canvas> and sending  
via XHR. I don't think using File for temporary in-memory binary data,  
as opposed to a file on disk, makes sense. The File should stick to  
representing files. After all, you would not make a File object to  
convert something to text for uploading. Nor would it make sense to do  
an asynchronous read from this. And under the covers, you would want  
to pass the actual binary data to the upload code, not a file with a  
file name.

Regards,
Maciej



More information about the whatwg mailing list