Netlify部署后MongoDB Atlas图片上传失败及页面报错问题求助
Netlify部署后MongoDB Atlas图片上传失败及页面报错问题求助
各位大佬好,我最近做了一个简单的图片上传小项目,本地跑起来完全没问题,但部署到Netlify后就出了一堆问题,实在头大,来这儿求助大家!
问题详情
- 本地测试:启动localhost服务器后,选择图片点击上传,能成功把文件存到MongoDB Atlas的GridFS里,接口返回也正常,一切都顺风顺水
- 部署到Netlify后:点击上传按钮后,图片根本没传到数据库里,而且上传操作完成后刷新页面,还会直接弹出“页面找不到”的错误,完全搞不懂哪里出问题了
我的代码
后端Node.js代码
const express = require('express'); const mongoose = require('mongoose'); const multer = require('multer'); const GridFsStorage = require('multer-gridfs-storage').GridFsStorage; const Grid = require('gridfs-stream'); const app = express(); const mongoURI = 'mongodb+srv://tabish69122681:(Hide my password for privacy)@mycluster.94px1em.mongodb.net/?retryWrites=true&w=majority'; const conn = mongoose.createConnection(mongoURI, { useNewUrlParser: true, useUnifiedTopology: true }); let gfs; conn.once('open', () => { gfs = Grid(conn.db, mongoose.mongo); gfs.collection('uploads'); }); const storage = new GridFsStorage({ url: mongoURI, file: (req, file) => { return new Promise((resolve, reject) => { const fileInfo = { filename: file.originalname, bucketName: 'uploads' }; resolve(fileInfo); }); } }); const upload = multer({ storage }); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); app.post('/upload', upload.single('file'), (req, res) => { res.status(201).json({ message: 'File uploaded successfully' }); }); app.get('/files', (req, res) => { gfs.files.find().toArray((err, files) => { if (!files || files.length === 0) { return res.status(404).json({ err: 'No files exist' }); } return res.json(files); }); }); app.get('/files/:filename', (req, res) => { gfs.files.findOne({ filename: req.params.filename }, (err, file) => { if (!file || file.length === 0) { return res.status(404).json({ err: 'No file exists' }); } return res.json(file); }); }); const port = process.env.PORT || 5500; app.listen(port, () => console.log(`Server is running on port ${port}`));
前端HTML代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>File Upload</title> <script src="app.js"></script> </head> <body> <form action="/upload" method="POST" enctype="multipart/form-data"> <input type="file" name="file" id="imageInput" accept="image/*"> <button type="submit">Upload</button> </form> </body> </html>
备注:内容来源于stack exchange,提问作者Tabish
相关产品推荐
相关产品推荐

