繁体   English   中英

如何使用 expressjs 发送多个文件?

[英]How do I send multiple files with expressjs?

我希望能够发送许多文件,如果可能的话,可以发送整个目录,以便我可以在从 html 文件调用的其他 js 文件中访问它。

const app = require("express")();
const http = require("http").Server(app);
const io = require("socket.io")(http);
const port = process.env.PORT || 3000;

app.use("/styles", express.static(__dirname));

app.get("/", function (req, res) {
  //res.sendFile("C:/Users/Kevin_Who/Desktop/Online Chat Game/index.html");
  //res.sendFile("C:/Users/Kevin_Who/Desktop/Online Chat Game/mainScript.js");
  res.sendFile("C:/Users/Kevin_Who/Desktop/Online Game Files/");
  //app.use(express.static("Online Game Files"));
});

我尝试使用 res.sendFile 发送许多文件,但它只发送第一个文件。 在 html 文件中,它在脚本标签 ( <script src="mainScript.js" type="module"></script> ) 中引用 mainScript.js。 在 mainScript.js 中,它还引用了图像文件,我需要帮助找到如何发送和访问这些文件( tiles[2].src = "./Assets/Blocks/StoneBrickWall.png"; )。

当浏览器在您的 html 文件中找到此内容时:

<script src="mainScript.js" type="module"></script>

它将向您的服务器创建一个新的 http 请求。 http 请求将发送到<somePath>/mainScript.js ,其中<somePath>是当前页面 URL 的路径。 如果 URL 是顶级 URL,则请求将 go 发送到/mainScript.js 您的服务器需要处理对/mainScript.js的特定请求并发送适当的脚本文件。

这就是 web 页面的工作方式。 浏览器对文件中的每个资源(脚本、图像、CSS 文件等)发出单独的 http 请求,您的服务器需要分别响应每个 Z80791B3AE7002CB88C246876D9FAA8F8 请求并发送适当的资源。

在 Express 中,这些对 static 资源的请求通常由express.static()处理,其中一行中间件可以处理目录层次结构中许多文件的服务。

Note: It is generally advisable not to use path relative URLs for your static resources because the browser will combine those path relative URLs with the path of the current web page and this will make it hard to use the same static resources in different web pages on您的网站。 相反,使用前导/开始您的 static URL,因此无论在哪个页面中使用它们,它们都会向您的服务器生成恒定的 URL 请求。

我尝试使用 res.sendFile 发送许多文件

您只能使用res.sendFile()发送一个文件。 它将一个文件作为 http 响应发送,并且每个请求只能发送一个 http 响应。

在 mainScript.js 中,它还引用了图像文件,我需要帮助找到如何发送和访问这些文件tiles[2].src = "./Assets/Blocks/StoneBrickWall.png";

这也将导致浏览器向您的服务器发出新请求,您还需要让服务器响应该请求。 同样,您可能不希望它以./开头,而只是/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM