如何将图像与 html 一起发送到我的 node.js 服务器上的页面?如何使用express static发送图像? (这里需要一个例子)
服务器端->
app.get('/', function (req, res) {
res.sendFile(__dirname + '/login.html');
});
app.post('/m', function (req, res) {
res.sendFile(__dirname + '/m/a.png');
res.sendFile(__dirname + '/m/b.png');
res.sendFile(__dirname + '/m/c.png')
res.sendFile(__dirname + '/m/d.html');
});
最佳答案
在网络服务器中,您不仅仅将多个图像发送到页面。相反,浏览器请求页面 HTML,解析它,找到 <img>
HTML 中的标记,然后分别请求每个图像,并且您的 Web 服务器通过发送请求的图像来响应每个单独的图像请求。
如果您将所有图像放在一个公共(public)文件夹中,则可以使用express.static()
用一行代码处理所有图像请求。例如这样的一行代码:
app.use("/image", express.static(path.join(__dirname, "public")));
将为如下 URL 提供所有图像请求:
/image/a.png
/image/b.png
通过查找匹配的 a.png
和b.png
在下面的“公共(public)”子目录中__dirname
(这是脚本的目录)。您可以阅读更多关于 express.static()
here 。显然,您可以使用要使用的 URL 的路径以及找到图像的路径。两者必须共同努力才能express.static()
可以在服务器硬盘上您放置的相应位置找到正确的图像。
在理解app.use()
中的单独路径组件如何理解时,经常会出现一些困惑。和express.static()
一起工作。在上面的示例中,"/image"
将成为请求 URL 的一部分,并且此 app.use("/image", ...)
告诉 Express 您想要将此特定中间件应用于以 /image
开头的任何请求路径.
然后path.join(__dirname, "public")
正在讲述express.static()
获取 /image
之后的其余 URL 路径并在子文件夹 public
中查找它在目录 __dirname
下。所以,如果浏览器请求 /image/a.png
,app.use()
语句将触发,因为 /image
匹配该 URL,然后 express.static()
将尝试查找路径 a.png
的剩余部分在您告诉它查找的目录中。
在您的服务器硬盘上,它看起来像这样:
/myproject/
app.js
login.html
/public
a.png
b.png
我在与 app.js 相同的目录中显示了 login.html,只是因为这就是您当前编写的代码的方式。我个人不会将任何公共(public)文件与我的服务器脚本放在同一目录中,因为我希望很容易不犯错误并意外地将我的服务器文件公开给公众。
我通常会这样做:
/myproject/
app.js
/public
login.html
a.png
b.png
app.use("/image", express.static(path.join(__dirname, "public")));
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname, "public", "login.html"));
});
或者,就让express.static()
也提供 login.html 文件。
关于javascript - node.js - 如何将多个图像发送到服务器上的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43022482/