访问 Express 上传文件夹

问题描述 投票:0回答:1

我的 Express 有问题。我做了一个文件上传系统,后端是 Express 和 Multer。

我可以完全从前端发送文件到后端,但我的问题是保存数据。

如何保存数据?

第一种方法是将文件保存为数据库中的base64数据,但这不是一个好方法,因为读取base64文件非常慢。

第二种方法是将文件保存在 Node.js 项目上传文件夹中。 我可以上传此文件夹中的文件,但如何读取该文件?我的后端 URL 是这样的:https://example.com/api/product/all.

上传文件的URL是什么?

node.js express file-upload multer
1个回答
0
投票

为了帮助您,我已经从事过类似的项目以供快速参考,我将为您提供代码片段

require('dotenv').config()

const express = require('express');
const mongoose = require('mongoose');
const multer = require('multer');
const path = require('path');
const cors = require('cors');
const User = require('./models/User');

const app = express();
const port = process.env.PORT |3000;

// Connect to MongoDB
mongoose.connect(process.env.Mongodb_Uri, {useNewUrlParser: true})
.then(() => console.log('MongoDB connected'))
  .catch(err => console.log(err));

// Set up multer for file uploads
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, 'uploads/');
    },
    filename: (req, file, cb) => {
        cb(null, Date.now() + path.extname(file.originalname));
    }
});

const upload = multer({ storage: storage });

app.use(cors());
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

// Endpoint to handle form submission
app.post('/submit', upload.single('file'), async (req, res) => {
    try {
        const { name, address, email } = req.body;
        const filePath = req.file.path;
console.log(req)
        const newUser = new User({
            name,
            address,
            email,
            filePath
        });

        await newUser.save();

        res.send('Form data and file uploaded successfully!');
    } catch (err) {
        res.status(500).send('Error uploading file and form data');
    }
});

app.listen(port, () => {
    console.log(`Server running at http://localhost:${port}`);
});

这里是 multer 实现的完整代码, 点击这里

© www.soinside.com 2019 - 2024. All rights reserved.