我有一个在.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> Files
但Files
提交时为null
我如何准备表格以适合Web API的格式使用?
我不确定这是否是您要的,但我认为可能是。我发现只要能进出二进制文件,那我就是金。这也为我提供了与其他语言(如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] 删除。
我来说两句