将文件从ASP.NET MVC 4.6应用程序发布到ASP.NET Core Web API

凯文·布拉德肖

我有一个在.NET Framework 4.6中使用的ASP.NET MVC Web应用程序。

我需要能够上传文件,然后将其转发到ASP.NET Core 3.1 Web API。

问题是我不知道如何将文件从客户端应用发送到API。

API接受如下请求:

public class ReportUploadRequest
{
    public List<IFormFile> Files { get; set; }
    public int FolderId { get; set; }
    public int BrokerId { get; set; }
}

ASP.NET MVC应用程序具有控制器功能,该功能接受表单提交并尝试发布到API。

来自表单的文件将在ASP.NET MVC中接收,如下所示:

HttpPostedFileBase[] Files

我无法解决如何将HttpPostedFileBase[] Files文件转换List<IFormFile> Files为Web API所需格式。

我尝试使用接收控制器中的文件,List<IFormFile> FilesFiles提交时为null

我如何准备表格以适合Web API的格式使用?

CMasMas先生

不确定这是否是您要的,但我认为可能是。我发现只要能进出二进制文件,那我就是金。这也为我提供了与其他语言(如C +++)的良好互操作性。

如果不是您的要求,请告诉我,我将删除答案。

这就是我所做的。我特别需要将二进制数据传递到控制器并返回二进制数据。

对于我的用例,秘密在application / octet-stream中

[Route("api/[controller]")]
[ApiController]
public class SomeDangController : ControllerBase
{
    [HttpPost]
    [Produces("application/octet-stream")]
    public async Task<Stream> GetBinaryThingy()
    {
        using (var reader = new StreamReader(HttpContext.Request.Body))
        {
            using (MemoryStream ms = new MemoryStream())
            {
                await reader.BaseStream.CopyToAsync(ms);

                var buffer = ms.ToArray();
                //buffer now holds binary data from the client
            }
       }
       byte[] bytes_return = null  //populate your binary return here.
       return new MemoryStream(bytes_return);
   }
}

并在客户端上..像这样的东西:

    public async System.Threading.Tasks.Task<byte[]> PostBinaryStuffAsync(byte[] buffer)
    {
        ByteArrayContent byteContent = new ByteArrayContent(buffer);

        var response = await client.PostAsync(dangServerURL, byteContent);

        var responseBytes = await response.Content.ReadAsByteArrayAsync();

        return responseBytes;
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将 ASP.NET MVC Core 应用程序的 [部分] 发布到 Web 主机

如何将XML从ASP.NET 4 Web API返回到ASP.NET Core 2应用程序?

ASP .Net Core Web 应用程序调用 Web API

将.NET Core Web API / Angular应用程序发布到IIS

将 ASP.NET Core Web API 与不使用 MVC 的应用程序一起使用

如何在 ASP.NET Core 6 中将应用程序项目的服务集合扩展到 Web api?

无法将我的表单从 angular 6 应用程序发布到 asp.net web api

如何从Web API调用ASP.NET Core Web MVC

ASP.NET Core Web API与ASP.NET Core应用程序

如何使 PUT 從 ASP.NET MVC 到 ASP.NET Core Web API?

将文件从ASP.NET Core Web API发布到另一个ASP.NET Core Web API

使用.NET Core Web API作为ASP.NET Web窗体应用程序的子路由

将 .NET Core 3.1 Web API 与 React App 集成为 MVC 应用程序

将 ASP.NET MVC Web 应用程序从 .NET Framework 4.5 升级到 4.7.2

如何将Web API添加到现有的ASP.NET MVC 4 Web应用程序项目中?

将现有的ASP.NET Core Web应用程序更改为目标.NET Framework 4.x

配置 ASP.NET MVC 4 Web 应用程序以使用 Identity Server 4

如何使用asp net core http客户端将文件和文本数据发布到web api?

Asp.net Core中的Web应用程序与Web Api项目类型

部署asp net core web应用程序后找不到Web API 404

Asp.Net Core MVC Web应用程序中的单元测试

在 ASP.NET Core 3 MVC Web 应用程序中设置路由

Asp.Net Core 3.1 MVC Web应用程序使用SqlDateTime编译错误

ASP Net Core MVC-在库中启动Web应用程序

使用 MVC 的 ASP.NET Core Web 应用程序/自动更新控制器

如何允许从本地主机和容器到ASP.NET Core Web API应用程序的HTTPS连接?

将Asp.Net Web API托管为IIS上的Asp.Net MVC应用程序下的应用程序

将ASP.NET MVC Web应用程序部署到heroku

我未注册服务的Web API ASP.NET MVC6应用程序上的异常