无法从node.js中的文件夹读取图像

无法从node.js中的文件夹读取图像,node.js,express,Node.js,Express,我已将图像放在/public/images路径中。现在在响应中,我得到了我想要的url。但是,当我将该url粘贴到web浏览器上时,它会显示cannotget/public/images/food-1-xxhdpi.png。那么我应该编写单独的API来处理这个问题吗 主文件app.js var express = require('express'); var mongoose = require('mongoose'); var bodyParser = require('body-parse

我已将图像放在/public/images路径中。现在在响应中,我得到了我想要的url。但是,当我将该url粘贴到web浏览器上时,它会显示cannotget/public/images/food-1-xxhdpi.png。那么我应该编写单独的API来处理这个问题吗

主文件app.js

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
var app = express();
var PORT = 3000;
var foodtrucklist = require('./controller/foodtrucklist.js');
var foodtruck = require('./model/datafoodtruck');

var db = mongoose.connect('mongodb://127.0.0.1:27017/quflip');

mongoose.connection.once('connected', function() {
    console.log("Connected to database")
    foodtruck.save(function(err,foodtrucks){
        if (err) res.send(err);
    });
});

app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.use(express.static(__dirname + '/public/images'));


app.get('/foodtrucklist',foodtrucklist);

app.listen(PORT,function() {
    console.log('express listining on port' + PORT);
});
这条线

app.use(express.static(__dirname + '/public/images'));
将/public/images文件夹中的静态内容映射到web应用程序的根目录。因此,只有当完整路径为…/public/images/public/images/food-1-xxhdpi.png时,请求/public/images/food-1-xxhdpi.png才会起作用

您应该请求/food-1-xxhdpi.png,或者将代码行更改为:

 app.use('/my-virtual-directory',express.static(__dirname + '/public/images'));
这样就可以在您选择的/my虚拟目录中拾取请求

所以。。。在本例中,您的文件将成为/my virtual directory/food-1-xxhdpi.png

显然,您仍然可以这样做,使其外部映射到与内部映射相同的方式:

 app.use('/public/images', express.static(__dirname + '/public/images'));

下面是有关express的静态中间件的更多信息:

您可以尝试这样的后端

app.useexpress.static__dirname+/public'

然后前端使用此提取位置,如

<img src="images/your image name" alt="" />
尝试:

后端:

  var path = require('path');
  var app = express();
  var express = require('express');

  app.use(express.static(path.join(__dirname, 'public')));
前端:

 <img src="/images/food-1-xxhdpi.png" alt="">

我目前正在处理项目,下一段代码对我来说很好:

app.use(express.static('public'));
当我尝试在.hbs中实现这一点时,很容易做到:

<img src='/images/image.jpg'  alt='...' />
只需在app.js文件中键入以下代码

现在我将使用以下代码访问该图像

这里我的实际路径是/public/assets/category\u pic/但我使用上面的代码行将其转换为/static/category/


现在我可以使用这个url访问图像文件了http://localhost:3000/static/category/myimage.jpg

app.使用'/public/images',express.static.\u dirname+'/public/images';为我工作。谢谢仅此调用静态文件为什么仅此?您的声明是绝对的,因此没有考虑请求的上下文,或者不同的要求可能会使此建议不正确。我告诉过您,您只能使用此结构调用静态文件app.useexpress.static__dirname+“/public”;当您将图像调用到前端时,您可以添加您的文件夹和名称以及带有扩展名的图像名称。这并不难。这只是一个简单的问题,我的评论更为突出,这是你声明的唯一部分和必要性。你的评论很有限制性。您可以做其他事情,如设置特定的虚拟目录、使用其他路径等。因此,不仅仅是您建议的结构。
app.use('/static/category/', express.static(__dirname+'/public/assets/category_pic/'));
<img src="/static/category/myimage.jpg" width="50" height="50">