[whatwg] "Content-Disposition" property for <a> tags

Roger Hågensen rescator at emsai.net
Fri Jul 30 18:57:26 PDT 2010

On 2010-07-30 20:54, Eduard Pascual wrote:
> On Fri, Jul 30, 2010 at 12:36 PM, Dennis Joachimsthaler<dennis at efjot.de>  wrote:
>> Having a Content-Disposition property on<a>  tags which does the same as
>> the HTTP Header.
>> For example changing the file name of the file to be downloaded or rather
>> have a image
>> file download rather than it being shown in the browser directly.
>> This would avoid constructs such as<a href="hi">Download</a>  (Right click
>> and click save
>> target as... to download).
> To top things up, note that "saving a file to disk" is always equally
> or less dangerous than "letting the UA perform the default action for
> a resource": on the most "evil" scenario, there would be at least one
> further step of confirmation or user action before the saved data has
> a chance to do anything (assuming it's in some executable form;
> otherwise it will never "do" anything).

I really like this idea too as it has annoyed me when designing webpages 
as well.

I'd propose the following though:

<a href="stuff.zip" download>This defaults to application/octet-stream 
and clicking the link will behave as if the user selected Save As from 
UI context menu!</a>

<a href="stuff.zip" download="audio/vorbis">This tells the browser this 
is audio and of type vorbis, clicking the link will behave as if the 
user selected Save As from UI context menu and the UI may default to the 
user's Music download folder!</a>

The reason I suggest download="" is that it's flexible, it's for example 
possible to add to this in a compatible way by doing 
download="audio/vorbis;something else here"
Where "something else here" could be "filename" or "modification-date" 
as per http://tools.ietf.org/html/rfc2183
This is somewhat important as it's possible that a file on a server 
could have a last modified that does not match reality (backup 
restoration failed to touch the modified date or the server is 
configured wrongly etc. or the file is served using a script),

Example: <a href="stuff.zip" download="application/zip;filename=Stuff - 
Text Adventure Installer.zip">This defaults to application/octet-stream 
and clicking the link will behave as if the user selected Save As from 
UI context menu!</a>

A little remark though, if download is used with something that is not a 
href then I'm not really sure, should this be a validation warning?
Or should it be valid as long as some form of media is referenced, like 
for example:
<image src="cool.png" download="image/png;Brand X's very cool 
logo.png">This tells the browser this is a image of type PNG, if the 
user triggers the Save As then the UI may default to the user's Images 
download folder, using the filename and modification date suggested by 
the download attribute!

I'm also sure that web indexers like Google and the rest will love this 
as well, as they can make some early assumptions when scanning the html.
There may no point for Google to bother with the .zip file for example, 
but the .png and possibly the ogg vorbis might be of interest and the 
modified date would also be of interest.

There are other benefits to this as well, as it's possible to serve any 
content from a script it helps reduce ambiguity in cases where you today 
have got: <a href="stuff.php?id=15">Huh? I don't wanna guess what the 
filename will be or modified date<a/>
or <a href="blah/stuff/">Good luck making any assumptions on this one, 
what would even the Save As browser UI look like for this?</a>

So something like this certainly makes sense to me at least.

How many here can recall at least once when you tried to download, and 
the filename matched the .php script rathr than the actual file that was 
downloaded? *raises hand and grins*

PS! Obviously this does not excuse not having proper a proper 
Content-Disposition in the HTTP header as a server should provide that 
as well (preferably matching the download attribute exactly but if not 
then the download attribute takes priority in the Save As UI).


Roger "Rescator" Hågensen.
Freelancer - http://EmSai.net/

More information about the whatwg mailing list