.NET Core Web API 中的 IFormFile 对于 axios 和 ajax 文件上传为 null,但在 Postman 中有效

2024-07-04

介绍

因此,我有一个 API,可以使用以下签名将文件上传到 Azure:

public async Task<IActionResult> Post([FromForm]IEnumerable<IFormFile> files)

该 API 是使用 Postman 构建和测试的,在使用以下参数时效果很好:

但是,当我尝试使用 Postman 或 axios 生成的 AJAX jQuery 在 React 应用程序中调用它时,IFormFile 文件变量为 null。

handleFileChange = async (event) => {
    let formData = new FormData();
    let files = event.target.files[0];
    formData.append('file', logo); // Can put "files" here or the imported picture "logo"


 console.log("Form Data:", formData.get("files"));
    await axios.post('api/files/uploadfiles', formData,{
        'content-type': "multipart/form-data",
        'Content-Type': "multipart/form-data",
    })
         .then(response => response.data)
        .then(data => console.log("File Upload Response:" , data));
}

.NET Core 使用 axios/ajax 获取的 API 请求

.NET Core 使用 Postman 获取的 API 请求

enter image description here You will notice here that the main difference is that the Postman has the file under files, while the axios request seems to only reference it under "Results View" but has nothing under files. Am I appending the correct item to the form? I have tried this with an imported image as well as a dynamic one from the following input field:

<FormGroup id = 'file-form'>
    <Label for="file">Attach Files:</Label>
    <Input type="file" name="files" id="File" onChange={this.handleFileChange}/>
</FormGroup>

但没有运气。任何帮助都会非常 赞赏!


更新#1

在回顾了一些微软之后文档 https://learn.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.2我在 Microsoft 文档中发现了一个警告,称表单的 enctype 为“multipart/form-data”。我尝试这样做没有成功。


这就是我在操作方法中所做的:

[HttpPost]
public void Post([FromForm]ValueFile files)
{
     //do logic
}

然后我创建一个名为 ValueFile 的 ViewModel

public class ValueFile
{
    public IEnumerable<IFormFile> Files { get; set; }
}

在我的网络客户端中,我使用了 jquery ajax:

$('#fileTest').on('change',
        function() {

            var fd = new FormData();
            fd.append('files', $('#fileTest')[0].files[0]);

            $.ajax({
                "async": true,
                "crossDomain": true,
                "url": "http://localhost:5000/api/values",
                "method": "POST",
                "processData": false,
                "contentType": false,
                "mimeType": "multipart/form-data",
                "data": fd
            }).done(function (response) {
                console.log(response);
            });
        });

<form id='file-form'>
    <Label for="file">Attach Files:</Label>
    <Input type="file" name="files" id="fileTest"  />
</form>

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Core Web API 中的 IFormFile 对于 axios 和 ajax 文件上传为 null,但在 Postman 中有效 的相关文章

  • 显示工具提示时 d3.event 的 x 和 y 坐标不正确

    我正在尝试在水平条形图上显示工具提示 如果我稍微向下滚动页面 此工具提示将无法正常工作 如果条形图在视图中且无需滚动 则此方法效果很好 但是 如果我在图表上方添加更多元素 当我向下滚动时 工具提示会从鼠标指针处移至更高位置 请帮助我解决这个
  • SharePoint REST 查询 SP.UserProfiles.PeopleManager 特殊字符

    这个问题是我作为起点发现的这个问题的延伸 无需特殊字符即可工作 SharePoint REST 查询 SP UserProfiles PeopleManager https stackoverflow com questions 23340
  • 将命名函数存储在具有不同名称的变量中

    考虑这段代码 var x function z console log called x x will print out called x z ReferenceError 因此 可以在变量中存储命名函数 但我们仍然只能通过变量名来调用该
  • 浏览器在使用 CSS 缩放图像时通常使用什么算法?

    我想得到canvas以与 CSS 相同的视觉保真度渲染缩放图像 根据我的测试 在 Chrome 版本 43 0 2357 130 中完成 它似乎不是 Lanczos3 即使我的测试重采样范围 http entropymine com res
  • 有没有办法为非 60hz 的高/低帧速率显示器设置 rAF 的 FPS?

    所以我有一台 120hz 显示器和一台 60hz 显示器 如果我在第一个显示器上运行游戏 它会运行得非常快 但是当我在第二个显示器上运行它时 它会变慢 我知道也有很多 30hz 显示器 但速度会更慢 还有一些 240hz 显示器 速度快如闪
  • 如何更改Jquery表单验证插件中“此字段为必填”的内容?

    如何将 Jquery 表单验证插件中的 此字段为必填字段 的一般消息更改为 fi 必须 可以使用以下代码更改消息的颜色 但如何更改内容呢 我想更改所有 此字段为必填 消息 我想将所有 必需 消息更改为 fi 必须 selector vali
  • JavaScript 阻止表单提交

    当我按下 JavaScript 对话框上的取消按钮时 我试图让我的表单不提交 我有这个代码 document ready function submit click function e e preventDefault var link
  • 内存模型中的词法作用域是什么样的?

    假设我们有一个函数 function foo var x 10 function bar var y 20 return x y return bar console log foo 这在内存模型中会是什么样子 到目前为止 这就是我想象的堆
  • 使用 javascript 分割图像

    如何使用 javascript 获取单个图像的一部分并将其存储在数组中 然后在 html5 画布上随机显示 您可以使用drawImage 方法的剪切参数并将剪切的图像绘制到动态创建的画布上 一个例子可以是 function getClipp
  • 我应该担心 JavaScript 支持吗?

    我开发了一个支持ajax 的网站 然而 该网站目前无法在没有 JavaScript 的情况下运行 该网站在我测试过的任何浏览器以及 iPhone 诺基亚手机上都运行良好 但是 我还应该担心 javascript 支持吗 我知道有一些技术可以
  • 预加载队列中的 mp3 文件,以避免播放队列中下一个文件时出现任何延迟

    我正在编写一个脚本 其中我正在播放多个 mp3 并且每个文件都在队列中 播放下一个 mp3 文件会出现轻微延迟 因为缓冲 加载文件需要时间 我如何缓冲队列中的下一个 mp3 文件 以便所有文件顺利运行而没有任何延迟 getData 1 fu
  • 如何在新窗口中获取dom元素?

    JavaScript 中的一个简单任务是打开一个新窗口并在其中写入 但我需要在一个dom元素中写入一个带有ID的div var novoForm window open somform html wFormx width 800 heigh
  • angularjs表单重置错误

    我正在尝试使用 angularjs 制作一个带有验证的表单 到目前为止我做得很好 但是 当我提交重置按钮时 除了从验证部分收到的错误消息之外 所有字段都会重置 当我重置表单时 如何删除所有字段和错误消息 这就是我按下重置按钮时的情况 这是我
  • 如何将node.js应用程序转换为cordova

    我们建造了一个node js适用于台式机和平板电脑的应用程序 它是完全基于网络的应用程序 现在我计划在中实现与本机应用程序相同的应用程序android using Apache cordova 在项目目录下 我们有node modules
  • 如果按下警报,则转到“确定”按钮后的 URL

    我需要确保当用户在 JavaScript 警报窗口中单击 确定 时 浏览器会移动到不同的 URL 这可能吗 你是什 么意思 确保 alert message window location some url 在警报窗口中单击 确定 后重定向
  • 如何检测安装的Chrome版本?

    我正在开发一个 Chrome 扩展程序 我想知道是否有一种方法可以检测用户正在使用哪个版本的 Chrome 获取 Chrome 的主要版本作为整数 function getChromeVersion var raw navigator us
  • sails-mongo 适配器,标准化错误消息

    我正在使用 sails mongo 适配器尝试 sailsJs 和 mongodb 将验证添加到模型后 当验证失败时 我会收到以下响应 Users js 模型 module exports schema true attributes na
  • 使用加载器 ts-node/esm.js 运行节点需要导入具有 .js 扩展名

    我正在尝试将我的 package json 设置为模块来运行节点 14 type module 如果我在打字稿文件上运行此命令 node loader ts node esm mjs experimental top level await
  • scrollIntoView 滚动得太远

    我有一个页面 其中包含从数据库动态生成的带有 div 的表行的滚动条 每个表格行的作用就像一个链接 有点像您在视频播放器旁边的 YouTube 播放列表中看到的那样 当用户访问该页面时 他们所在的选项应该位于滚动 div 的顶部 此功能正在
  • IOS - React Native - 未处理的 JS 异常:SyntaxError

    每当我创建新的 React Native 项目时 我都会遇到问题 显示红色屏幕 并在 xcode 控制台中收到以下错误消息 嗨 我有同样的问题 在这里找到了解决方案 https github com facebook react nativ

随机推荐