res.download(path [, filename] [, options] [, fn])
Express v4.16.0 及更高版本支持可选的
options
参数。The optional
options
argument is supported by Express v4.16.0 onwards.
LgKEJivJt4oBdDMvv9q8Wk0Qd9sDgKUujUf906smH4tDVKKGDsX7bJuVSky/y94VYe03vZkujE5S4tGagKS/eo1Oupkm9CFTEsn7kA4FHS2ez83zKyNOnGBDMr8t6UTnBiC4kYZlTwI4BA/ha68VH+jkZqXNxaS/eG9erwIJ39m8Dx+RV+zM5QUzo5jCWS9Kb5K4GVMg+ViRc0bbffMhy5q4tOTg58c+OzfQ85PXdkV6m3K7Uhil7eVbUUgoA7J4CNPXXN0c962GHcyKsgRrhRIbtVfAfdPf2IRwFKw6i04f1BcAWkMz8xn13BKaxDr6IKc9KwgpZluK8rXR4nYjiaV7TZCTc1kjWK92Ai57S3TzKE1jtOsxFCin7JN7RHY+ZV/zbOBDH03+YdVSu+rrKgZ66NyY6OpsqSuy6ENLEaCaVHNFdKovWJAunmQi4XEv6MM0mXsOTprunx2fpbinIUYjO7QsXmrgxdhMQmGDF/0UxHDMWGIrNNbt7SblDlG6HsHqXo0V3krMtIQYCbu7N5/1lcbAUGy1Jw3OJlW3vejQEvcAcXLSP98d0yWS8sx7XqvdEZqDvwR2nLeo7Ia7DVWGsh9VSrobRGhImu8n5VajmCr7v1rEabxEv1D/+e0SiynUbvBY8eQVOHIsivBh3i+588p5b1kkYJJlKcfMsciKiCxzeZtisMU7NdF+W9Q3Y9DZdygy8UBz51D0RNhdI/AoAFnXxy43N3Hlj/WWjADHVR21MQUAlRPXvWeVOeeAaXwqO3RBVVTrs9/wqzHJxSw4Yheo6sC+mGaPVuKzZDiy3Xo6KxqSMdKqJQAxAa/jNaG7gcGLKoYiSSgsWBRnB5FgcV+USIIDwxtFmZ8gZug+OLBTppJRkAvM5/3WGpSOD9qgJCLH5yp3DnhtC1tblUBUjfWZK1qLMVByHd2qM4Ud0Ys1BR6Db2FRM+bwEBn8qBOXg4uJET7dsNa9eNy/f0J/FTBs4sHSM2IrO9O/xD3SpJu7k23gIpCSDc0oDWhg0764/tFJsikMTd57+ICjnGOinhWnMZWI+JuvRdyn+kE=
OlmeNs6ov6LzPQStdWUNZHx5TtfndeCjpwqDdtkSNqOSDKVYVhGDzicGOELD1RdmvMNUUI6EZZ+rSFNpDFIJI3uFuaXN3Zj/6bdLBT2jyT/Dam16a/UPW96rX9pG580e0XD6T95V509jEQycjq5pK3gnt62NUntBQ/G/trvd/KcH9tfCIbww9GsUydtyvrm5ncuNYe7WDRniCC1MV083TSgTQjV31Ep6jDNZGqAp49k=
d05ia9aSYrJcJpjuLA7qYRmCvDinzQJyxw3BivHFrQqDV2Rv/MCLyqdbCCcgqu3Shit+lDgUcl8ipEqR6buMZXIKCzu1wp72kOhp96bwzS4olhh+Dnr1q/okI4VG+aP3G7c935v9Z8UBKqccmosL5lDwDHPKrnuZP2U1smRSl5RaLGQqtlfMozKlT9mpWMFr2vVN2F6ON5QUOvc4fXEO5GnRNFz4jLy46QYtHObPsEr8PXsSf6T6hY/88VScpA35
属性 8qsbXL+LgkVbECuiQ6rRJQ== | 描述 Kg4ox1NKqDhM4MuDJCbcpQ== | 默认 bxQIxECxL8iJGn08LtOQqQ== | 可用性 yspJ/3+GQL3VL35TRebOYA== |
---|---|---|---|
maxAge | 设置 Cache-Control 标头的 max-age 属性(以毫秒为单位)或 ms 格式 中的字符串6teib9bfZjn30g1vLWWy/GOHHLJU/FAgvxr5sBqz/Pk1VLvchA5BYBKpKUI/wh4FNMsNF0sP8W2TJ+7IdkNKRrSU8hEnIJ0PNmi4IeULQ1mwxCfYS2rzEe7/LF6zR40YdGReUVCyyPhSTxmYKPTv76gwqBvDY3yN3qwO8zisl7njJwOqC9iQs+UxOqbK+jjMy+uKZS8CUFrdPcqM+rcHgA== | 0 | 4.16+ |
lastModified | 将 Last-Modified 标头设置为操作系统上文件的最后修改日期。设置 false 以禁用它。Nhg6tBJ/3t4dqERkiPbEzDf6Gicr1Svzm9SJEjK5zRBHdl+AH+0J8Kc94apzE5oRffinhgaNQh7Gpapf4Iuvs5lU8loYYFd/OvuoaqL1me3HNR2l23/QIaTjJ3Nvyek201wZGDpXq0GzYf/vd6fdx+cexmEubaUYsFWv0wfQ8f0lIISeyA6/+hpmg2mLa39L | 启用 AGX1xwqSrrUU8MARYzYLxA== | 4.16+ |
headers | 包含与文件一起服务的 HTTP 标头的对象。标题 Content-Disposition 将被 filename 参数覆盖。9qUQ4gmIGAL+fFMLJ/G16RQVr9IpojBp0SiGqQJc91ErOGutc2b/sAsl5/BsJD3x2egph9KO/2TkQmJX+hLpa9uWMO4WGhTWrlvCdFciQLSye7CaGmLlUr/VIqeLmBcKpkkpWZJ0kGrYoIHQcYgtFLtSINDOa2uQ08BXu2SuEZ0Jufo2FDbhbS7zZlZiKWPUS1sr52OPuTpmtpTQZRDnPw== | 4.16+ | |
dotfiles | 提供点文件的选项。可能的值为 "allow"、"deny"、"ignore"。 Jtw0JA3OcIR8q+dYCv8IcdLc/4W1QJ1TUSQ5aE7qEZUPT9whlrwt9YE6dQTwXlcOhFT6ZDxPIVvqWx+ObKzf9zVtEw4ophnTP9W67FcYki8= | "ignore" | 4.16+ |
acceptRanges | 启用或禁用接受范围请求。 1Okrv/JG1Hze9k924N7OsPtCkiFTPmyWiUlPvjdruMyCu9E/9OCai41wxQlzvVP9 | true | 4.16+ |
cacheControl | 启用或禁用设置 Cache-Control 响应标头。1Okrv/JG1Hze9k924N7OsMs+ETKglkVeIAe0hdPCsybQJrsTcEnGg3270fDQjmkP4ygMDzAzZjk9K6lur3kRpNtn5FLDb1S+FkCnxR9cjSM= | true | 4.16+ |
immutable | 在 Cache-Control 响应标头中启用或禁用 immutable 指令。如果启用,还应指定 maxAge 选项以启用缓存。immutable 指令将阻止受支持的客户端在 maxAge 选项的生命周期内发出条件请求以检查文件是否已更改。1Okrv/JG1Hze9k924N7OsASm8aK6+cPyYPgnAfsKOAEU/vJHQZV70yCvxkVU+E0vzgrc/UqSGilbRgLV98NdLVaYCtwS3/QVOAMcpLtv+8wHr4DyvwlRe8Rz0vc3heN6HqHpPUK5U4PTV+0v0MSdfIGfodq5XKwrxVyItjZWE7ykhyPbyCnHI7r/sQJxjDcMfgTegJS1xI6RyTvMjj9KaPlzT8Xbm+cFmexre0X935oJdxlXhYHZGi83+rHRk7yExA8r5qLfEiH3UwQtzX66i66cQE6QG1YnfDVg5+Wo2/I94XENwXFk0li/wRwSywm8tWXgCIrgyCiVPDnPI9L/xLOXje6OKkJO1LOa5pslpo4mqRiJdgYJIe+/T1H6X6yE1jqwiqPP4moJcgYfKVSPqVpul36G57y1om4IcWG5933+q1B0AQWOoHQ3pFhAB1G2+rNSOqJ17WSWCvqe4oI63RJmGays86aVSJhB52Crh/hsRQDMyI9AiCSRoFKN2A9i | false | 4.16+ |
lxmXnLy2fjGq65qINo+ZOGhDPmc6XNPRch9y1UKc4n244xzHaTmjkvGIibSNF3QgH8xTDMluBnK9vqxCrcRemdrEZDGnL5xTI23Aa5o+I3PSrM+y96m1rWB76kgz90Kyb3wuMMNlK1TZzXXBNExNUl+dW/j4UrahsjAGd3K7wa/wka2KBTpvrpAZ3G+FTtzmybWs6X6VQotNGgks0KrjiaVUprFniDBaiEciHDs0KeKj4ttmIFtBd83y9EyhJ7GaOXO2KHSVGotO8mtXKj3+O77u4hJO5euRqoATpUtuga33xJYIRxlbrX+Ow0Eh6+wME8dgM+9e6fp04mHHqQO/3cqOwGoY4UotNlgter1RWkRmusSukg0SJ2XPy2bYLajz7bFutgNt3ZGuA7sSWv6b10YZlFPZ3ybScOfJSdqiRMYFJ0mXtDLdWQ2taoX3IrColJg6OOxBL96h28qtZ1HKfTzN7EhuLAkNO8Q4Q/6JNUXQN1uIblGPHTMJgWUDEAvlqKmzIJv7kcIGcHeKJk0PfjMcBU4eMDA3ZRmAcB2XMITolP/LrS/uTeaGCd+8d0uxOfYEcBP7DQPe5Qx6e87VzZ6QXNZ1OkRNqhZgeRD+EIdQP+rlITw4vIkMQwSsQWHpuAZk+iyja5cSNjj6AY/sTnkhUpPect5WQwPehCDnNF+hnHsnzlXGTqLH1LYnHGoYxFXngNpKRJNveiQqimAyoDP6pl0igtaCvFlPI+zJztH+8tT2gRiI+XnvCCR61m5qNCjMHop7P/tuueoM/ROV6yhIm6R/mZGHwq9EGFwLShE=
res.download('/report-12345.pdf')
res.download('/report-12345.pdf', 'report.pdf')
res.download('/report-12345.pdf', 'report.pdf', (err) => {
if (err) {
// Handle error, but keep in mind the response may be partially-sent
// so check res.headersSent
} else {
// decrement a download credit, etc.
}
})