如何以多部分/表单数据类型将请求从Asp.netMVC发送到外部api

本文关键字:netMVC Asp api 外部 请求 多部 数据类型 表单 | 更新日期: 2023-09-27 17:58:33

我正在尝试将上传的文件从我的控制器发送到项目外部的另一个API。目标API接受多部分/形式数据类型的请求

我从当前上下文中读取了上传的文件

我的问题是如何发送请求的多部分/表单数据,并将上传的文件附加到上

我试着在客户端做这件事,但由于跨域问题,我做不到。

如何以多部分/表单数据类型将请求从Asp.netMVC发送到外部api

您需要向那个API发出一个Http请求。

以下是如何使用HttpClient发出Http请求并将文件作为附件发送的示例。

filePath参数可以是从MVC上传的文件。

public async Task SendAsync(string filePath)
{
    string url = "http://localhost/api/method";
    MultipartFormDataContent content = new MultipartFormDataContent();
    var fileContent = new StreamContent(File.OpenRead(filePath));
    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    fileContent.Headers.ContentDisposition.FileName = "file.txt";
    fileContent.Headers.ContentDisposition.Name = "file";
    fileContent.Headers.ContentType = new MediaTypeHeaderValue("text/xml");
    content.Add(fileContent);
    using (HttpClient client = new HttpClient())
    {
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        HttpResponseMessage response = await client.PostAsync(url, content);
    }
}

检查此项http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Cors;
namespace WebService.Controllers
{
    [EnableCors(origins: "http://mywebclient.azurewebsites.net", headers: "*", methods: "*")]
    public class TestController : ApiController
    {
        // Controller methods not shown...
    }
}