- From: Eric Uhrhane <ericu@google.com>
- Date: Thu, 8 Jul 2010 15:47:52 -0700
- To: Jonas Sicking <jonas@sicking.cc>
- Cc: Web Applications Working Group WG <public-webapps@w3.org>
On Fri, Jul 2, 2010 at 8:19 PM, Jonas Sicking <jonas@sicking.cc> wrote: > On Thu, Jul 1, 2010 at 3:31 PM, Eric Uhrhane <ericu@google.com> wrote: >> The biggest unknown in the current BlobWriter spec [1] is how you >> obtain one in the first place. >> There are two current proposals, which I've summarized below. I've >> heard only a few voices on this topic, and would love to get more >> opinions. New proposals would be welcome as well. >> >> If you favor one of the below, and don't think I've done it justice, >> please do weigh in with further details. >> >> >> Proposal A: a new input control. >> >> You'd add markup such as <input type=saveas> or <button type=saveas>. >> It could be styled however you please; it would pop up a standard >> File-SaveAs dialog, so there's no security problem there. You'd >> handle the event when the user selects a save location in order to >> grab the BlobWriter. >> >> Pluses: >> It parallels <input type=file>. >> It's user-initiated, so the default flow doesn't ever surprise the >> user with a popup. >> >> >> Proposal B: a new method on Window. >> >> window.saveAs(function(blobWriter) { /* grab the writer and use it >> */}, function(error) {...}); >> >> Pluses: >> It's a simple async API like many others we provide. >> App developers are free to provide any UI or control flow they like. >> >> >> In either case, we could add a parameter for the Blob, so that the >> system knows what it's saving, and/or a suggested mime-type and base >> name. Adding the Blob itself would let us eliminate the >> writeFile()/save() call mentioned in [2], so that you'd only grab the >> returned BlobWriter if you wanted to handle the progress events. > > I'm not a fan of the <input type=saveas> solution. In part because no > actual input is occurring. If we really want something like that then > I think reviving the old <bb> element is the way to go. The user is inputting a location at which to save the file. > However what I really think we should do is to provide some API which > given a blob and an optional filename, asynchronously returns an > object at which progress events are fired and which has an abort() > function. I don't care much if this function lives on a new object, > a'la SimpleFileWriter, or if it's added to something like the > Navigator object. OK, I'm not hearing any support whatsoever for option A, so let's go with something like SimpleFileWriter/BlobSaver. How about this? var blobSaver = window.saveAs(blob); blobSaver.onerror = onError; blobSaver.onwriteend = onWriteEnd; ... [where nothing actually happens until execution exits]
Received on Thursday, 8 July 2010 22:48:38 UTC