如何以多部分/表单数据类型将请求从Asp.netMVC发送到外部api
本文关键字:netMVC Asp api 外部 请求 多部 数据类型 表单 | 更新日期: 2023-09-27 17:58:33
我正在尝试将上传的文件从我的控制器发送到项目外部的另一个API。目标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...
}
}