node使用formidable上传文件报错

发布于 2022-09-05 06:24:43 字数 2426 浏览 39 评论 0

一直报错
bad content-type header, no content-type

const express = require('express');
const fs = require('fs');
const formidable = require('formidable');
const xlsx = require('node-xlsx');

const router = express.Router();

router.post('/', (req, res) => {
    console.log(' ########## POST /upload ####### ');
    let fileTypeError = false;
    const targetPath = `${__dirname}/upload`;
    const form = new formidable.IncomingForm();
    form.encoding = 'utf-8';
    form.keepExtensions = true;
    form.maxFieldsSize = 10 * 1024 * 1024;
    form.uploadDir = targetPath;

    const fields = [];
    const files = [];

    form.on('field', (field, value) => {
        fields.push([field, value]);
    });
    form.on('file', (field, file) => {
        console.log(`upload file: ${file.name}`);
       // 判断文件类型是否是xlsx
        if (file.type !== 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') {
            fileTypeError = true;
        }
        files.push([field, file]);
    });

    form.on('end', () => {
        // 遍历上传文件
        let fileName = '';
        let obj = '';
        const folderExists = fs.existsSync(targetPath);
        if (folderExists) {
            const dirList = fs.readdirSync(targetPath);
            dirList.forEach((item) => {
                if (!fs.statSync(`${targetPath}/${item}`).isDirectory()) {
                    console.log(`parse item:${targetPath}/${item}`);
                    fileName = `${targetPath}/${item}`;
                    if (!fileTypeError) {
                        // 解析excel
                        obj = xlsx.parse(fileName);
                        console.log(JSON.stringify(obj));
                        // insert into DB
                        // todo
                        res.send({ rtnCode: '0', rtnInfo: '成功导入数据' });
                    } else {
                        res.send({ rtnCode: '1', rtnInfo: '文件格式不正确' });
                    }
                    // delete file
                    fs.unlinkSync(fileName);
                }
            });
        } else {
            res.send({ rtnCode: '1', rtnInfo: '系统错误' });
        }
    });
    form.on('error', (err) => {
        res.send({ rtnCode: '1', rtnInfo: '上传出错' });
    });
    form.on('aborted', () => {
        res.send({ rtnCode: '1', rtnInfo: '放弃上传' });
    });
    form.parse(req);
});
module.exports = router;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一身仙ぐ女味 2022-09-12 06:24:43

解决了,postman 应该用form-data而不是binary
http://www.cnblogs.com/shimh/...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文