【问题标题】:Sending files through Axios to Asp.net Core Api?通过 Axios 将文件发送到 Asp.net Core Api?
【发布时间】:2019-03-09 04:59:34
【问题描述】:

如何将我的文件从我的 javascript(文件通过 react dropzone)发送到我的 asp.net 核心 api?

我正在使用 axios,我有这样的东西

var data = new FormData();
data.append('folderName', "4141515");
data.append('file', files[0].fileObject); //dropzone wraps the fileobject
axiosInstance2.post("/inventories/ImportImage", data)





[HttpPost("ImportImage")]
public async Task<IActionResult> ImportImage(IFormFile file, string folderName){}

这确实有效,但只有“文件”被填充,“文件夹名”变量为空。

我尝试将它放入模型中,但它不起作用(400 状态代码)

public class Test
{

    public IFormFile file { get; set; }
    public string folderName { get; set; }
}

FormData 也是将其发送到服务器的唯一方法吗?

编辑

看来我需要使用[FromForm] Test test

【问题讨论】:

  • 不知道axios专门做什么。但是对于使用 FormData 的普通 jQuery 帖子,您的代码应该可以工作(将填充文件夹名称)
  • 你的 asp.net 核心版本是什么? Controller 上有 [ApiController] 吗?作为我的测试,它与[ApiController] 相关,这里有两个选项,一个是删除[ApiController],另一个是添加[FromForm] 以指定folderName 的绑定源,如ImportImage(IFormFile file, [FromForm]string folderName)
  • 使用的模型是正确的,我也想确保它走的是正确的路线,是什么导致了 400 代码?

标签: javascript reactjs asp.net-core axios react-dropzone


【解决方案1】:

使用 .net core api 控制器,您必须在参数前使用 [FromBody] 标签,并将参数更改为 Test 类型,它将值绑定到您可以使用的类。像这样: public async Task ImportImage([FromBody] Test your_values_here){}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2012-05-11
    • 2020-02-29
    • 2020-12-03
    • 2021-01-04
    相关资源
    最近更新 更多