Deno 是一个轻量级的 JavaScript/TypeScript 运行时环境,具有安全性、模块化和可支持多语言特性。它可以用于 Web、服务端、命令行等多种应用场景。本文将介绍在 Deno 中如何实现文件上传和下载。
文件上传
在 Deno 中,我们可以使用标准的 HTTP 框架来实现文件上传,这里以 Oak 为例。步骤如下:
1. 安装依赖
使用 deno install
命令全局安装 Oak:
deno install --global --allow-net https://deno.land/x/oak/mod.ts
2. 编写上传代码
下面是一个文件上传的示例代码,它使用 multipart/form-data
格式来传输文件:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ----- --- - --- -------------- ----- ------ - --- --------- ---------------------- ----- ----- -- - ----- - ----- - - ----- ------------------ ----- --------------------- --- -- -------- - ------------------- - ---- ----------------- - --- ---- ---------- ------- - ----- ---- - ------------------ -- ------- - ------------------- - ---- ----------------- - -------- ------ ----- -- ---- ------ ------- - ----- ---- - ----------------------------- ----- -------------------- ----- ------------- ----------------- - ----- -------- -- --------- --- ------------------------- --------------------------------- ---------------------- -- ------------------------ ----- ------------ ----- ---- ---
上面的代码创建了一个 HTTP 服务,当客户端向 /upload
路径发送 POST 请求时,服务器将收到一个包含文件数据的 multipart/form-data
请求体。服务器将根据文件名保存文件,并返回上传成功的信息。
3. 运行服务器
为了让服务器能够接受来自客户端的请求,需要用 --allow-net
权限来运行上面的代码:
deno run --allow-net server.ts
如果上传成功,会返回一个形如 File uploaded to ./uploads/filename
的消息。
文件下载
在 Deno 中,我们可以使用 Deno.readFile
函数来将文件读入内存,并使用标准的 HTTP 框架将其发送给客户端。步骤如下:
1. 编写下载路由
下面是一个文件下载的示例代码,它将 ./uploads
目录下的文件下载到客户端:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ----- --- - --- -------------- ----- ------ - --- --------- -------------------- ----- ----- -- - ----- ---- - ---------------- -- ------- - ------------------- - ---- ----------------- - -------- ---- ------ ------- - ----- ---- - -------------------- --- - ----- ---- - ----- -------------------- ---------------------------------------- ---------------------------- ----------------------------------------------- ------------ --------------------- ----------------- - ----- - ----- - ------------------- - ---- ----------------- - ----- --- ------- - --- ------------------------- --------------------------------- ---------------------- -- ------------------------ ----- ------------ ----- ---- ---
上面的代码创建了一个 HTTP 服务,当客户端向 /:name
路径发送 GET 请求时,服务器将查找 ./uploads
目录下是否有名为 name
的文件。如果找到文件,服务器将读取文件并将其作为二进制数据返回给客户端,同时设置响应头 Content-Type
和 Content-Disposition
以便浏览器下载该文件。如果没有找到文件,服务器将返回 HTTP 404 错误。
2. 运行服务器
为了让服务器能够接受来自客户端的请求,需要用 --allow-net
和 --allow-read
权限来运行上面的代码:
deno run --allow-net --allow-read server.ts
如果文件存在且可以正常被读取,浏览器将下载该文件。
总结
本文介绍了在 Deno 中如何实现文件上传和下载。我们使用了标准的 HTTP 框架 Oak 和文件操作 API Deno.readFile
来实现这些功能。这些示例代码可以用于构建 Web 应用程序和下载站点等场景。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6465bd0a968c7c53b0665e77