C#:从正文和文件中将模型发布为 MultipartFormDataContent

2024-01-27

我正在寻找一种在一个请求中发送模型和图像的方法。我尝试从正文发送我的模型,但我不知道如何发送文件。除了在不同的文件中发送图像和模型之外,还有其他方法吗?

这是我的 API 中的 POST 方法:

[HttpPost]
[Route("UploadNewEvent")]
public async Task<IActionResult> CreateNewEventAsync([FromBody] EventModel model)
{
    var file = this.Request.Form.Files.LastOrDefault();

    if (file != null)
    {
        var uploads = Path.Combine(_environment.WebRootPath, "uploads");

        using (var fileStream = new FileStream(Path.Combine(uploads, "test.jpg"), FileMode.Create))
        {
            await file.CopyToAsync(fileStream);
        }
     }

     // do sth with model later    
     return Ok();
}

这是我的应用程序的代码:

public async Task SendNewEvent(EventModel model, MediaFile photo)
{
    var uri = $"{baseUri}api/User/Event/CreateNewEvent";

    if (photo != null)
    {
        var multipartContent = new MultipartFormDataContent();
        multipartContent.Add(new StreamContent(photo.GetStream()), "\"file\"", $"\"{photo.Path}\"");

        var httpClient = new HttpClient();               
        var jsonObject = JsonConvert.SerializeObject(model);
        var stringContent = new StringContent(jsonObject, Encoding.UTF8, "application/json");
        var httpResponseMessage = await httpClient.PostAsync(uri, stringContent);
    }
}

要通过文件参数传递模型,您需要将数据作为表单数据发布。

请按照以下步骤操作:

  1. Change FromBody to FromForm

        [HttpPost]
    [Route("UploadNewEvent")]
    public async Task<IActionResult> CreateNewEventAsync([FromForm] EventModel model)
    {
        // do sth with model later    
        return Ok();
    }
    
  2. 更改客户端代码以发送表单数据而不是 json 字符串

        var uri = $"https://localhost:44339/UploadNewEvent";
        FileStream fileStream = new FileStream(@"filepath\T1.PNG", FileMode.Open);
        var multipartContent = new MultipartFormDataContent();
        multipartContent.Add(new StreamContent(fileStream), "\"file\"", @"filepath\T1.PNG");
    
    
        // EventModel other fields
        multipartContent.Add(new StringContent("2"), "Id");
        multipartContent.Add(new StringContent("Tom"), "Name");
        var httpClient = new HttpClient();
        var httpResponseMessage = httpClient.PostAsync(uri, multipartContent).Result;
    
  3. 事件模型

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

C#:从正文和文件中将模型发布为 MultipartFormDataContent 的相关文章

  • C++ 中的软(不是:弱)引用 - 这可能吗?有实施吗?

    在 C 中我正在使用boost shared ptr and boost weak ptr自动删除不再需要的对象 我知道这些与引用计数一起工作 在 Java 中 内存由垃圾收集器管理 它将内置对象引用视为strong WeakReferen
  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 通过不同 DLL 或 EXE 中的指针或引用访问 STL 对象时发生访问冲突

    我在使用旧版 VC6 时遇到以下问题 我只是无法切换到现代编译器 因为我正在处理遗留代码库 http support microsoft com kb 172396 http support microsoft com kb 172396
  • “MyClass”的类型初始值设定项引发异常

    以下是我的Windows服务代码 当我调试代码时 我收到错误 异常 CSMessageUtility CSDetails 的类型初始值设定项引发异常 using System using System Collections Generic
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS

随机推荐

  • Java类型检查器注解的@Retention

    Java 8 类型注释 JSR 308 允许类型检查器执行静态代码分析 例如 检查器框架 https checkerframework org 可以检查是否有可能nullness via NonNull注释 不同的项目定义了自己的NonNu
  • C# - 可以隐藏公共继承的方法(例如,将其设为派生类的私有方法)

    假设我有带有公共方法 A 和 B 的 BaseClass 并通过继承创建 DerivedClass e g public DerivedClass BaseClass 现在我想在 DerivedClass 中开发一个使用 A 和 B 的方法
  • 检查2个R程序是否相同

    最近我了解到我可以使用identical or all equal检查 2 个数据集是否相同 我还可以用它们来检查 2 个 R 程序是否相同吗 还有比下面更好或更合适的方法吗 program 1 lt readLines c r stuff
  • 是否可以使用 Windows 命令行编辑二进制文件?

    Windows 中有没有办法从命令行编辑二进制文件 即可以写入批处理文件的方式 我希望能够在现有文件中的已知位置编辑单个字节 这个现有问题 1 已经解决 但这是一个 Linux 解决方案 我正在寻找类似的 Windows 版本 背景 从 S
  • 如何获取 DataSet 作为 Entity Framework 5.0 中查询的结果?

    我不确定这是否可能 我可能尝试使用错误的工具来完成我想做的工作 假设我想要执行以下操作 我执行一个名为 GetTableName 的函数 该函数返回我想要从中获取数据的 SQL 表的名称 我执行另一个名为 GetFields 的函数 该函数
  • jQuery UI ajax 选项卡 - 在选项卡内加载链接时请求成倍增加

    我正在使用 jQuery UI 选项卡 通过 ajax 加载选项卡内容 内容可能包含我想要在所选选项卡中加载的链接 为了实现这一点 我使用这段代码 tab div tabs load function event ui a not targ
  • 修改函数参数

    很抱歉 如果这是一个愚蠢的问题 但我已经寻找了一段时间并没有真正找到答案 如果我正在编写一个 python 函数 例如 def function in1 in2 in1 in1 1 in2 in2 1 我该如何坚持这些改变 我知道他们为什么
  • 如何映射嵌套的复杂JSON对象并将它们保存到核心数据?

    我在将复杂的嵌套 JSON 数据映射和保存到核心数据对象时遇到问题 它用于在离线模式和缓存的情况下读取数据 JSON也有代码 它代表代码列表中对象的id JSON 中对象的嵌套深度可以在 5 8 个对象之间 此类 简化的 JSON 的示例如
  • 在 iOS 上缩小图像最节省内存的方法是什么?

    在后台线程中 我的应用程序需要从磁盘读取图像 将其缩小到屏幕大小 1024x768 或 2048x1536 并将其保存回磁盘 原始图像大部分来自相机胶卷 但其中一些可能具有更大的尺寸 例如 3000x3000 随后 在不同的线程中 这些图像
  • PassportJs 身份验证无限循环和执行(默认)查询

    我正在尝试使用 PassportJs 和 Sequelize 构建身份验证系统 我自己制作了注册系统 使用Sequelize 我只想使用 PassportJS 进行登录 它不会将我重定向到 failureRedirect 路由 也不会重定向
  • 从服务器动态添加数据以自动完成 Textview

    我想在我的android应用程序中实现google类型搜索 为此我使用了自动完成文本视图 当我一个接一个地输入字符时它非常有效 但是当我同时输入多个字符时会出现问题 我的应用程序显示一个对话框并强制关闭 提前致谢 public class
  • 位置 0 出现意外标记文件结束

    RequestMapping value sensorlog method RequestMethod POST public ResponseBody String sensorlog HttpServletRequest request
  • 如何创建一个大小有限的VecDeque?

    我想实施一个VecDeque有最大尺寸限制 我有两个策略 但我都无法完成 第一种方法 通过组合继承 我创建了一个新结构 pub struct LimVecDeque
  • 通过 TCP 发送和接收 XML 数据

    我一直在尝试弄清楚如何通过 TCP 服务器发送和接收 XML 数据 我有java编程背景 所以我在这里有点超出我的深度 如果我只发送纯文本 我的程序就可以工作 但是一旦我尝试发送 xml 数据 它就会挂起 服务器永远不会收到消息 我一直在寻
  • 如何使我的请求在后台运行,同时填充其他 EditText(线程)?

    我是线程新手 但我有一个 EditText 视图 每当失去焦点时 它都会使用用户从 EditText 的输入填充带有图像徽标的 RecyclerView 但是 每当用户失去焦点并且调用该方法时 一切都会停止一段时间 这意味着我不擅长线程 我
  • 将 stdout 和 stderr 重定向到文件和控制台

    在 powershell 脚本中 我调用一个程序并想要重定向stdout and stderr to 不同的文件 同时仍然在控制台中显示两者的输出 所以基本上 我想要 stdout gt stdout stdout gt out log s
  • 无法在 Eclipse + EPIC 中查看本地文件

    我刚刚安装了 Eclipse 3 7 的 Perl EPIC 插件 调试器本身工作正常 我可以单步执行我的代码 但是我看不到任何变量 Eclipse 在错误日志中报告此错误 解析调试器变量时发生错误 的内容 变量视图可能不准确 字符串导致的
  • 录制的声音文件(ala google now,google keep)-RecognizerIntent/Listener

    我一直在开发一个使用 recognizerIntent 来获取语音输入的应用程序 然而 自从 jelly bean 推出以来 我一直无法从我的语音输入中获取实际的声音文件 在识别监听器中 http developer android com
  • 您不能对同一个动态路径 Nextjs 使用不同的 slug 名称

    我在我的项目中使用基于文件夹结构的 nextjs 默认动态路由技术 我有一条路线是 pages language location location id 现在我遇到一个用例 除了最后一个参数之外 我需要与上面的路由完全相同 locatio
  • C#:从正文和文件中将模型发布为 MultipartFormDataContent

    我正在寻找一种在一个请求中发送模型和图像的方法 我尝试从正文发送我的模型 但我不知道如何发送文件 除了在不同的文件中发送图像和模型之外 还有其他方法吗 这是我的 API 中的 POST 方法 HttpPost Route UploadNew