无法从node.js中的文件夹读取图像
我已将图像放在/public/images路径中。现在在响应中,我得到了我想要的url。但是,当我将该url粘贴到web浏览器上时,它会显示cannotget/public/images/food-1-xxhdpi.png。那么我应该编写单独的API来处理这个问题吗 主文件app.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
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.jpgapp.使用'/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">