[whatwg] Proposal: API to ask the user for a file

Ian Hickson ian at hixie.ch
Mon Apr 29 13:41:51 PDT 2013

On Mon, 29 Apr 2013, JC wrote:
> So far the only way to ask a user to select a file (e.g. to upload an 
> attachment in a mail client) without showing the ugly "file input" UI is 
> to create one of these elements, hide it somehow, and invoke the "click" 
> method on it and listen for the "changed" event.

You can also just accept a drag-and-dropped file.

Having the <input type=file> UI hidden is probably not supposed to be 
possible (though it's hard for us to stop it), because it means you can 
trick people into clicking the button and bringing up the dialog, which 
can, if you know what browser/OS they're using, let you in some cases 
trick them into uploading a particular file. (It's gotten harder with 
browsers going away from allowing arbitrary text input into that 
control, though, so this might no longer be that big a deal.)

> The minimum requirements would be to be able to provide a string for the 
> dialog title, a string for the accepted mime types and a boolean to 
> specify whether multiple files can be selected at once, the return value 
> would be a FileList object [1]. This is essentially the same 
> functionality offered by the existing file input element [2] with the 
> only addition of a title for the dialog.

We could maybe do this if browser vendors are comfortable with it... it's 
definitely something we want to be really careful about, though. For 
example, we don't want to set up a situation where a site can trigger a 
download of a sensitive file (e.g. bank account details) and then trick 
the user into uploading it by asking the user to "Select the file you want 
to protect from uploading" or "For debugging purposes, select the newest 
file in this directory, which is a log file we just generated".

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list