Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 只想上传jpeg/png文件吗_Node.js_Mongodb_Express_Mongoose - Fatal编程技术网

Node.js 只想上传jpeg/png文件吗

Node.js 只想上传jpeg/png文件吗,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我已经创建了一个server.js,在那里我可以上传任何文件到mongodb,但我只想修改这样一种方式,我只能上传图像文件上传任何其他文件会出现错误。有人可以建议我可以做什么,但使用mongoose库是强制性的。我已经根据提供的建议编辑了代码 server.js:: const express = require('express'); const bodyParser = require('body-parser'); const path= require('path'); const cr

我已经创建了一个server.js,在那里我可以上传任何文件到mongodb,但我只想修改这样一种方式,我只能上传图像文件上传任何其他文件会出现错误。有人可以建议我可以做什么,但使用mongoose库是强制性的。我已经根据提供的建议编辑了代码

server.js::

const express = require('express');
const bodyParser = require('body-parser');
const path= require('path');
const crypto = require('crypto');
const mongoose = require('mongoose');
const multer = require('multer');
const GridFsStorage = require('multer-gridfs-storage');
const Grid= require('gridfs-stream');
const methodOverride = require('method-override');

const fileFilter = (req,file,cb) => {
    var filetypes = /jpeg|jpg/;
    var mimetype = filetypes.test(file.mimetype);
    var extname = 
filetypes.test(path.extname(file.originamname).toLowerCase());

    if (mimetype && extname) {
        return cb(null,true);
    }
    cb("Error:file upload only supports the following filetype-" 
+filetypes);
}

const app = express();
//Middleware

app.use(bodyParser.json());
app.use(methodOverride('_method'));
app.set('view engine', 'ejs');
//MOngo URI
const mongoURI = 'mongodb://localhost:27017/server_files_db';

//create mongo connection
const conn = mongoose.createConnection(mongoURI);

//Init gfs
let gfs;

conn.once('open', () => {
    //initialize stream
    gfs = Grid(conn.db, mongoose.mongo);
    gfs.collection('uploads');
})

//create storage engine
const storage = new GridFsStorage({
    url: mongoURI,
    file: (req, file) => {
      return new Promise((resolve, reject) => {
        crypto.randomBytes(16, (err, buf) => {
          if (err) {
            return reject(err);
          }
          const filename = buf.toString('hex') + 
    path.extname(file.originalname);
              const fileInfo = {
             filename: filename,
             bucketName: 'uploads'
           };
          resolve(fileInfo);
        });
      });
     }
   });
   const upload = multer({ storage: storage, fileFilter: fileFilter });
 //Route GET
 //@dest uploads file to DB
 app.get('/',(req,res)=>{
     res.render('index');
 });

//@route POST /upload
//@dest uploads file to DB
app.post('/upload', upload.single('file'), (req,res) => {
     // res.json({file: req.file});
     res.redirect('/');
 });
 const port = 5000;

app.listen(port, () => console.log(`server started on port ${port}`));

这回答了你的问题吗?试试这个