前言
在使用 Fastify 开发 Web 应用的过程中,常常有需要让用户下载文件的需求。例如,某个网站需要提供一个下载链接,让用户下载某个文件(如 PDF、Excel 表格等)。本文将介绍如何在 Fastify 中实现文件下载的功能。
实现方法
Fastify 提供了 reply.download()
方法来实现文件下载的功能。该方法将文件作为响应体直接传输给客户端,可以处理大型文件和高并发请求。
基本用法
使用 reply.download()
方法时,只需要将文件的完整路径作为参数传递即可。Fastify 会自动将文件流写入响应体,返回给客户端。示例如下:
-- -------------------- ---- ------- ----- ------- - --------------------- ------------------------ --------- ------ -- - ----- -------- - -------------------- ------------------------- --- -------------------- ----- -------- -- - -- ----- ----- ---- ------------------- --------- -- ------------- ---
使用上述代码,当用户访问 /download
路径时,Fastify 会读取 file.pdf
文件的内容,并将文件流自动写入响应体,返回给客户端。
添加文件名
默认情况下,reply.download()
方法会使用文件路径中的最后一个部分作为文件名,并将其自动添加到响应头中。你可以使用 filename
选项来指定一个不同的文件名,这在下载文件时非常有用。示例如下:
-- -------------------- ---- ------- ----- ------- - --------------------- ------------------------ --------- ------ -- - ----- -------- - -------------------- ------------------------ - --------- -------------- --- --- -------------------- ----- -------- -- - -- ----- ----- ---- ------------------- --------- -- ------------- ---
使用上述代码,当用户访问 /download
路径时,Fastify 不仅会使用新的文件名(即 new-file.pdf
),而且还将其添加到响应头中,返回给客户端。
自定义响应头
有时我们需要在响应头中自定义一些信息,例如设置 Content-Type
、Content-Disposition
等属性。你可以使用 headers
选项来添加自定义响应头,示例如下:
-- -------------------- ---- ------- ----- ------- - --------------------- ------------------------ --------- ------ -- - ----- -------- - -------------------- ----- ------- - - --------------- ------------------ ---------------------- ------------ ------------------------ -- ------------------------ - ------- --- --- -------------------- ----- -------- -- - -- ----- ----- ---- ------------------- --------- -- ------------- ---
注意,在上面的示例中,我们使用了 Content-Disposition: attachment
,这表示浏览器应该将文件视为附件,并提示用户保存该文件。
总结
在本文中,我们介绍了如何在 Fastify 框架下实现文件下载的功能。我们介绍了 reply.download()
方法的用法,包括如何添加文件名和自定义响应头。希望这篇文章对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ded442f6b2d6eab39f5f40