【问题标题】:How can I save an image sent from my NextJS client to my NodeJS server?如何保存从 NextJS 客户端发送的图像到我的 NodeJS 服务器?
【发布时间】:2022-01-05 15:00:55
【问题描述】:

几周前我尝试将图像上传到我的 NodeJS 服务器,然后从那里将其保存到 S3 存储桶,但我被困在第一部分,我的服务器没有收到图像。我使用multer 将其保存在public/ 文件夹中。

这就是我的客户所拥有的:

const onSubmit = async (data: any) => {
        const image = data.file[0];
        const params: RequestInit = {
            method: 'POST',
            headers: {
                'Content-Type': `multipart/form-data`,
                'Accept': 'image/*'
            },
            body: JSON.stringify(data)
        };
        await fetch('/api/post/create-post', params);
        // Upload image to S3 Bucket
        // Save post to db
    }

我在Content-Typedata=${JSON.stringify(data)} 中设置了一个边界,当我在尝试保存图像之前记录我的请求标头时,没有“边界”,而是收到此错误Error: Multipart: Boundary not found(此错误显示在我的服务器控制台中)

这就是我在我的服务器中拥有的:

const upload = multer({
    dest: 'public/'
})

const router = express.Router();

router.post('/', (req, res, next) => {
    console.log(req.headers);
    next();
}, upload.single('photo'), (req, res) => {
    console.log(req.file);

    res.json({ success: true });
})

module.exports = router;

【问题讨论】:

    标签: node.js next.js multer multipart


    【解决方案1】:

    您可以从 Axios 标头中删除内容类型,并让 Axios 自行设置。

    const onSubmit = async (data: any) => {
            const image = data.file[0];
            const params: RequestInit = {
                method: 'POST',
                body: JSON.stringify(data)
            };
            await fetch('/api/post/create-post', params);
            // Upload image to S3 Bucket
            // Save post to db
        }
    

    您可以检查this 链接是否有边界错误。

    【讨论】:

    • 在边界不应该去我要发送的额外数据吗? description 例如?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2015-10-22
    • 2020-08-17
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多