当前位置: 首页 > 知识库问答 >
问题:

Multer 未标识多部分/表单数据请求文件

盖昊东
2023-03-14

客户(ReactJS/Axios):

const handleSubmit = async (croppedImage: any) => {

    var formData = new FormData();
    formData.append('file', croppedImage);
    formData.append('name', croppedImage.name)

    api.post(
        '/firebase',
        formData,
        {
            headers: {
                'Content-Type': 'multipart/form-data',
            }
        }
    )
        .then(() => console.log('Success'))
        .catch(e => console.error(e))
}

Multer中间件:

const { v4: uuidv4 } = require('uuid');
const multer = require('multer');

const error = new Error('Only .png format allowed!');

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        if (!file) return cb(error);
        cb(null, DIR);
    },
    filename: (req, file, cb) => {
        if (!file) return cb(error);
        const fileName = file.originalname.toLowerCase().split(' ').join('-');
        cb(null, uuidv4(4) + '-' + fileName)
    }
});
var upload = multer({
    storage: storage,
    fileFilter: (req, file, cb) => {
        if (!file) return cb(error);
        if (file.mimetype == "image/png") {
            cb(null, true);
        } else {
            cb(null, false);
            return cb(error);
        }
    }
});

module.exports = upload.single('file');

下一个():

异步(req,res)=

const fileName = req.file.filename; 

此处req.file未定义!

...

}

当我尝试使用Axios传递图像时,req.file在控制器中显示为未定义。

我认为错误是在传递多部分/表单数据时,因为当我通过Insonmia Rest执行此操作时,它会工作!

共有2个答案

锺英卫
2023-03-14

croppedImage就像一个blob url或类似的东西,所以:

客户(ReactJS/Axios):

let blob = await fetch(croppedImage).then(r => r.blob());
var formData = new FormData();
formData.append('file', blob, 'file.jpeg')
鲁城
2023-03-14

表格示例:

<form action="/insert" enctype="multipart/form-data" method="post">
    <div class="form-group">
    <input type="file" class="form-control-file" name="uploaded_file">
    <input type="submit" value="Get me the stats!" class="btn btn-default">            
    </div>
</form>
 类似资料:
  • 问题内容: 我正在编写一个RESTful API。我在使用不同的动词上载图像时遇到麻烦。 考虑: 我有一个对象,可以通过对URL的发布/放置/删除/获取请求来创建/修改/删除/查看。如果有要上载的文件,则请求是多部分形式;如果只有文本要处理,则请求是application / xml。 为了处理与对象相关的图像上传,我正在做类似的事情: 这里的主要问题是在尝试处理放置请求时,显然$ _POST不包

  • 问题内容: 我正在尝试通过带有POST请求的照片上传 根据自述文件,我应该能够做到这一点 问题是,这不起作用。我收到测试服务器的回复,说它转储了0个post变量。 我已经确认该HTML小页面服务器处于工作状态 所以问题是,请求模块在做什么?有没有更好的方法来发送节点? 问题答案: 经过更多研究后,我决定使用。这使得分段上传非常容易。

  • 我正在尝试通过使用多部分数据主体的JMeter构建HTTP请求。 我有一个HTTP头管理器,其内容类型设置为多部分/表单数据;边界=AaB03x。我选择了“将多部分/表单数据用于POST”。 然后我创建了一个数据主体, 当我运行这个程序时,我发现请求没有正确地发送正文,而是发送了一些随机数据, 发布数据: 并给出错误响应, 我的第二个问题是:请求的第3部分发送一个要上载的文件。我可以通过某种方式传

  • 我是Java(Spring Boot)新手,我正在尝试向s3发送一个

  • 在将FreshDesk集成到我的产品中时,我被用附件API创建票证所困扰。我使用高级Rest客户端测试API。我已经看到了许多关于栈溢出本身的论坛和问题,但我仍然对任何关于上传文件的多部分形式数据POST请求的回答不满意。 我想知道Advanced Rest Client中所需的请求格式以及标题 到目前为止,这是我正在使用的请求,但我没有得到正确的响应:

  • 我在Lumen(应用程序A)中创建了一个简单的API,它: 接收PSR-7请求接口 替换对应用程序B的请求的URI 并通过古斯发送请求。 上面的代码将数据传递给应用程序B以获取查询参数、x-www-form-urlencoded或JSON内容类型。但是,它无法传递多部分/form-data。(该文件在应用程序A中可用: