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

时间:2017-02-28 07:12:14

标签: node.js express

我已将图片放在“/ public / images”路径中。现在,我正在按照自己的意愿获取网址。但是,只要我将该网址粘贴到网络浏览器,就会显示无法获取/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);
});

5 个答案:

答案 0 :(得分:0)

这一行

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

/public/images文件夹中的静态内容映射到Web应用程序的根目录。因此,请求/public/images/food-1-xxhdpi.png仅在完整路径为.../public/images/public/images/food-1-xxhdpi.png

时才有效

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

 app.use('/my-virtual-directory',express.static(__dirname + '/public/images'));

这样就可以在您选择的/my-virtual-directory

中选择请求

所以...在这种情况下你的文件变成/my-virtual-directory/food-1-xxhdpi.png

显然,你仍然可以做到这一点,使它在外部映射到与内部映射相同的方式:

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

以下是有关Express的静态中间件的更多信息:https://expressjs.com/en/starter/static-files.html

答案 1 :(得分:0)

你可以尝试后端看起来像这样。

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

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

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

答案 2 :(得分:0)

尝试:

后端:

  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="">

答案 3 :(得分:0)

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

app.use(express.static('public'));

当我尝试在.hbs中达到此目的时,很容易:

<img src='/images/image.jpg'  alt='...' />

答案 4 :(得分:0)

只需在code文件中的app.js之后输入

app.use('/static/category/', express.static(__dirname+'/public/assets/category_pic/'));

现在我将通过使用以下code

来访问图像
<img src="/static/category/myimage.jpg" width="50" height="50">

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

现在我可以使用此网址http://localhost:3000/static/category/myimage.jpg

访问图像文件