Skip to content

Commit

Permalink
updated download link document
Browse files Browse the repository at this point in the history
restored rel="download" as deprecated section
added priorities description for filename and download attribute
  • Loading branch information
CatChen committed Jul 2, 2012
1 parent 0994183 commit 60ddadc
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions Doraemon/Download Link.md
Expand Up @@ -2,19 +2,25 @@

## 概述

这个文档说明豌豆荚百宝袋如何识别下载链接,以及如何从下载链接中提取目标文件的相关信息(meta data)。
这个文档说明豌豆荚 Windows 版百宝袋如何识别下载链接,以及如何从下载链接中提取目标文件的相关信息(meta data)。

一个典型的百宝袋下载链接应该是这样子的:(请注意提供给豌豆荚使用的参数键值对放在 `#` 井号后面,而非 `?` 问号后面。)
一个典型的百宝袋下载链接应该是这样子的:(请注意提供给豌豆荚 Windows 版使用的参数键值对放在 `#` 井号后面,而非 `?` 问号后面。)

<a href="app.apk#name=app&image=%2Fimages%2Fapp-icon.png" rel="download">Download</a>

豌豆荚百宝袋会对 `a` 标签中的如下信息作出响应:
豌豆荚 Windows 版百宝袋会对 `a` 标签中的如下信息作出响应:

## download="filename.ext"

`download="filename.ext"` 属性向豌豆荚客户端表明这个链接的目标用于下载,同时给出下载时所建议使用的文件名。
`download="filename.ext"` 属性向豌豆荚表明这个链接的目标用于下载,同时给出下载时所建议使用的文件名。

在一般情况下,豌豆荚客户端会根据链接目标内容的 content-type 属性做出判断,到底应该是下载还是直接展示。但如果要想要下载的内容是纯文本或者 HTML,豌豆荚的默认行为会是直接展示,这时候可以通过 `download="filename.ext"` 来提示豌豆荚将默认行为变更为下载,同时通过属性取值(`"filename.ext"` 部分)给出建议使用的文件名。对于默认行为已经是下载的链接目标,这个属性同样能用于给出建议使用的文件名。
在一般情况下,豌豆荚会根据链接目标内容的 content-type 属性做出判断,到底应该是下载还是直接展示。但如果要想要下载的内容是纯文本或者 HTML,豌豆荚的默认行为会是直接展示,这时候可以通过 `download="filename.ext"` 来提示豌豆荚将默认行为变更为下载,同时通过属性取值(`"filename.ext"` 部分)给出建议使用的文件名。对于默认行为已经是下载的链接目标,这个属性同样能用于给出建议使用的文件名。

## rel="download"

_DEPRECATED!_

`rel="download"` 是一个已经不再建议使用的属性,它曾经的作用与 `download="filename.ext"` 相似,用于向豌豆荚声明链接目标应该用于下载而非直接显示。

## href="...\#key1=value1&key2=value2"

Expand All @@ -30,13 +36,13 @@

名称。会显示在资源管理界面和下载任务管理器。

如果下载链接所在的网页上使用了 micro-format,在锚点不提供 `name` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=name]` 元素上获取。
如果下载链接所在的网页上使用了 microdata,在锚点不提供 `name` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=name]` 元素上获取。

### image

图标。会显示在资源管理界面和下载任务管理器。

如果下载链接所在的网页上使用了 micro-format,在锚点不提供 `image` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=image]``*[itemprop=thumbnail] *[itemprop=image]``*[itemprop=thumbnailUrl]` 元素上获取。
如果下载链接所在的网页上使用了 microdata,在锚点不提供 `image` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=image]``*[itemprop=thumbnail] *[itemprop=image]``*[itemprop=thumbnailUrl]` 元素上获取。

### content-type

Expand All @@ -46,7 +52,7 @@

文件体积。文件在下载过程中如果提供了 HTTP header 的 `content-length` 属性,则以 HTTP header 属性为准。文件下载后,以实际存储的文件体积为准。会显示在资源管理界面和下载任务管理器。

如果下载链接所在的网页上使用了 micro-format,在锚点不提供 `content-length` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=fileSize]``*[itemprop=contentSize]` 元素上获取。
如果下载链接所在的网页上使用了 microdata,在锚点不提供 `content-length` 属性时,该属性从同一个 `itemscope` 内的 `*[itemprop=fileSize]``*[itemprop=contentSize]` 元素上获取。

### content-disposition

Expand All @@ -58,6 +64,8 @@

文件名。豌豆荚在考虑文件保存为什么文件名时,会参考这一参数。如果这一参数不是系统(豌豆荚 Windows 版需要同时考虑 Windows 和 Android)有效的文件名,则豌豆荚会做出必要的调整。

需要注意的是,在 `filename` 设置的文件名会覆盖在 `download` 设置的文件名,但 HTTP header 设置的文件名依然有最高优先级。

#### filepath

文件路径。豌豆荚在考虑文件保存路径时,会参考这一参数。由于下载资源是提供给 Android 设备使用的,所以这里的文件路径应该基于 Android 文件系统。

0 comments on commit 60ddadc

Please sign in to comment.