如何在 Deno 中实现文件上传和下载

阅读时长 5 分钟读完

Deno 是一个轻量级的 JavaScript/TypeScript 运行时环境,具有安全性、模块化和可支持多语言特性。它可以用于 Web、服务端、命令行等多种应用场景。本文将介绍在 Deno 中如何实现文件上传和下载。

文件上传

在 Deno 中,我们可以使用标准的 HTTP 框架来实现文件上传,这里以 Oak 为例。步骤如下:

1. 安装依赖

使用 deno install 命令全局安装 Oak:

2. 编写上传代码

下面是一个文件上传的示例代码,它使用 multipart/form-data 格式来传输文件:

-- -------------------- ---- -------
------ - ------------ ------ - ---- ---------------------------------

----- --- - --- --------------

----- ------ - --- ---------
---------------------- ----- ----- -- -
  ----- - ----- - - ----- ------------------ ----- --------------------- ---
  -- -------- -
    ------------------- - ----
    ----------------- - --- ---- ----------
    -------
  -
  ----- ---- - ------------------
  -- ------- -
    ------------------- - ----
    ----------------- - -------- ------ ----- -- ---- ------
    -------
  -
  ----- ---- - -----------------------------
  ----- -------------------- ----- -------------
  ----------------- - ----- -------- -- ---------
---

-------------------------
---------------------------------

---------------------- -- ------------------------
----- ------------ ----- ---- ---

上面的代码创建了一个 HTTP 服务,当客户端向 /upload 路径发送 POST 请求时,服务器将收到一个包含文件数据的 multipart/form-data 请求体。服务器将根据文件名保存文件,并返回上传成功的信息。

3. 运行服务器

为了让服务器能够接受来自客户端的请求,需要用 --allow-net 权限来运行上面的代码:

如果上传成功,会返回一个形如 File uploaded to ./uploads/filename 的消息。

文件下载

在 Deno 中,我们可以使用 Deno.readFile 函数来将文件读入内存,并使用标准的 HTTP 框架将其发送给客户端。步骤如下:

1. 编写下载路由

下面是一个文件下载的示例代码,它将 ./uploads 目录下的文件下载到客户端:

-- -------------------- ---- -------
------ - ------------ ------ - ---- ---------------------------------

----- --- - --- --------------

----- ------ - --- ---------
-------------------- ----- ----- -- -
  ----- ---- - ----------------
  -- ------- -
    ------------------- - ----
    ----------------- - -------- ---- ------
    -------
  -
  ----- ---- - --------------------
  --- -
    ----- ---- - ----- --------------------
    ---------------------------------------- ----------------------------
    ----------------------------------------------- ------------ ---------------------
    ----------------- - -----
  - ----- -
    ------------------- - ----
    ----------------- - ----- --- -------
  -
---

-------------------------
---------------------------------

---------------------- -- ------------------------
----- ------------ ----- ---- ---

上面的代码创建了一个 HTTP 服务,当客户端向 /:name 路径发送 GET 请求时,服务器将查找 ./uploads 目录下是否有名为 name 的文件。如果找到文件,服务器将读取文件并将其作为二进制数据返回给客户端,同时设置响应头 Content-TypeContent-Disposition 以便浏览器下载该文件。如果没有找到文件,服务器将返回 HTTP 404 错误。

2. 运行服务器

为了让服务器能够接受来自客户端的请求,需要用 --allow-net--allow-read 权限来运行上面的代码:

如果文件存在且可以正常被读取,浏览器将下载该文件。

总结

本文介绍了在 Deno 中如何实现文件上传和下载。我们使用了标准的 HTTP 框架 Oak 和文件操作 API Deno.readFile 来实现这些功能。这些示例代码可以用于构建 Web 应用程序和下载站点等场景。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6465bd0a968c7c53b0665e77

纠错
反馈