0
我已经在使用busboy的本地目录上传的图片,并通过 使用猫鼬形象,MongoDB的路径,但现在我无法 检索路径 显示检索图像的路径在我的ejs视图中的图像。我是这个nodejs的新手。请帮我 显示图像。如何从MongoDB中使用的NodeJS
非常感谢你提前:)
var express = require('express'); //Express Web Server
var busboy = require('connect-busboy'); //middleware for form/file upload
var path = require('path'); //used for file path
var fs = require('fs-extra'); //File System - for file manipulation
var mongoose = require('mongoose');
var mongoClient = require('mongodb').mongoClient;
var objectId = require('mongodb').ObjectId;
var app = express();
app.use(busboy());
app.use(express.static(path.join(__dirname, 'public')));
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/postname');
/* ==========================================================
Create a Route (/upload) to handle the Form submission
(handle POST requests to /upload)
Express v4 Route definition
============================================================ */
app.set('view engine','ejs');
app.use(express.static(__dirname + '/public'));
var nameSchema = mongoose.Schema({
newfile: Object,
path: String
});
var compileSchema = mongoose.model('foods', nameSchema);
app.get('/', function(req, res, next) {
res.render('index',{'title': 'New post app'});
});
app.route('/')
.post(function (req, res, next) {
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename) {
console.log("Uploading: " + filename);
//Path where image will be uploaded
fstream = fs.createWriteStream(__dirname + '/public/uploads/' + filename);
var dirname = path.join(__dirname + '/public/uploads/' + filename);
file.pipe(fstream);
//mongo save
var paths = new compileSchema({newfile : dirname, passReqToCallback: true});
paths.save(function(err){
if(err) throw err;
compileSchema.find({newfile: dirname}, (err, result) =>{
console.log();
return result;
});
});
fstream.on('close', function() {
console.log("Upload Finished of " + filename);
//where to go next
res.redirect('/profile');
});
});
});
app.get('/profile', (req, res)=>{
res.render('profile',{photo: req.result});
});
var server = app.listen(3030, function() {
console.log('Listening on port %d', server.address().port);
});
我EJS文件是:
<img src='<%= photo.newfile %>' >
我不太明白你的问题。您必须在要显示图像的路径中使用Mongoose检索'path'值。因此,例如'compileSchema.find({“你的键值”},(犯错,结果)=> {//传递给你的respoonse})' – forJ
@serendipity我改变你每建议,但我没有得到返回值,我改变了上面的代码。对不起,打扰您。请帮帮我。谢谢 –
@serendipity我得到了结果非常感谢!但是如何在ejs中显示它。它不显示:( –