[whatwg] creating a new file via the File API

Eric U ericu at google.com
Wed Sep 7 12:52:51 PDT 2011


On Mon, Aug 15, 2011 at 3:40 AM, David Karger <karger at mit.edu> wrote:
> Apologies if I'm revisiting old territory.  I've been doing work on pure
> html/javascript applications that work entirely clientside
> (http://projects.csail.mit.edu/exhibit/Dido).  For persistence, they read
> and write local files.  There's already an <input type="file"> interface for
> letting the user specify a file to be read.  And I can use the same
> interface, inappropriately, to let the user overwrite a preexisting file.
>  But things get much messier if I want to let the user specify a _new_ file
> to be written, because the file-open dialog doesn't offer users a way to
> specify a new filename.  What I'd like to be able to do is specify a tag, or
> a invoke some javascript method, that will produce the "save file" dialog
> typical of most systems, with a graphical directory browser but including
> the option to specify a new filename.  This problem isn't unique to me; a
> discussion on stackoverflow appears at
> http://stackoverflow.com/questions/2897619/using-html5-javascript-to-generate-and-save-a-file
> where the proposed solution is to use flash---and that would be an
> unfortunate loss of html5 purity.  They also suggest the hack of using a
> data: url but that has size limitations.
>
> Perhaps <input type="file"> could be given an attribute specifying whether a
> new filename is permitted?
>
> -David Karger

This sounds like a job for the FileSaver interface [1].  Currently no
browser implements it, but we at Chrome have been considering it.  At
TPAC last year we discussed it a bit in the WebApps WG meeting; IIRC
we talked about letting it take a URL instead of or in addition to
just a Blob, for more general utility.

I suggest you bring it up on public-webapps@, where that spec lives.

      Eric

[1] http://dev.w3.org/2009/dap/file-system/file-writer.html#idl-def-FileSaver


More information about the whatwg mailing list