javascript - node.js - 如何将多个图像发送到服务器上的页面

标签 javascript node.js

如何将图像与 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.pngb.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.pngapp.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/

相关文章:

node.js - 恢复: Passing User Data

node.js - NPM 安装添加自定义警告消息

弹性beanstalk上的node.js : firefox 502 bad gateway

javascript - React + Electron 如何打印 HTML?

javascript - 如何在字符串中选择星号并设置其样式?

javascript - 在上传多张图片之前预览图片

javascript - 在生产中,我应该在每次部署时清理并重新安装 node_modules 吗?

javascript - 转换日期时间格式

javascript - 使用 queue() 加载多个文件并分配给全局变量

php - 兼容性 AES-256-CBC Node/Laravel