.Net Core 当中的HttpClient模拟form-data格式数据提交

在.Net Core项目中使用HttpClient进行Http请求时,遇到模拟form-data格式数据提交时第三方服务器(Node.js + Express)无法解析的问题。通过在添加表单项时将key加上双引号"",解决了第三方服务器使用connect-multiparty中间件无法获取表单数据的状况。改用multer中间件后,问题得到解决。

由于项目中服务器是当作中转服务器使用,所以需要用到Http请求,项目中采用的是.Net Core框架,http请求使用的是HttpClient 一般前端以表单方式提交数据至服务端时,都需要设置请求头中Content-Type为mulipart/form-data,示例代码如下(vue.js):

let content = "hhhh";
let imgs = getFiles(); // getFiles()方法返回一个文件对象数组,可自定义实现,

let formData = new FormData();
formData.append('content', content); // 添加表单参数,可自行添加
for(let i = 0; i < imgs.length; i++) {
    formData.append('imgs', imgs[i].file); // 添加文件
}
this.$axios({
    url: api.postUrl, // api接口路径
    method: 'post',
    data: formData,
    // 设置请求头Content-Type为multipart/form-data;charset=UTF-8
    headers: {
        
C# .NET Core 6中,如果你想通过`multipart/form-data` POST方式上传文件,比如文件名是"media",你需要使用HttpClient、MultipartFormDataContent以及File类来实现。下面是一个简单的范例: ```csharp using System; using System.Net.Http; using System.IO; public async Task UploadMedia(string apiUrl, string filePath) { // 创建一个HttpClient实例 using var client = new HttpClient(); // 创建MultipartFormDataContent MultipartFormDataContent formData = new MultipartFormDataContent(); // 添加文件部分,指定名称为"media" Stream fileStream = File.OpenRead(filePath); HttpContent mediaPart = new StreamContent(fileStream); mediaPart.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); mediaPart.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "media", FileName = Path.GetFileName(filePath) // 获取文件的实际名字 }; formData.Add(mediaPart); try { // 发送POST请求 HttpResponseMessage response = await client.PostAsync(apiUrl, formData); if (response.IsSuccessStatusCode) { Console.WriteLine($"File uploaded successfully with status code {response.StatusCode}"); } else { Console.WriteLine($"Upload failed with status code {response.StatusCode} and reason: {await response.Content.ReadAsStringAsync()}"); } } catch (Exception ex) { Console.WriteLine($"Error uploading file: {ex.Message}"); } // 关闭所有资源 fileStream.Close(); } // 调用示例 string apiUrl = "http://your-api-url.com/upload"; // 替换为你实际的API地址 string localFilePath = @"C:\path\to\file.jpg"; // 替换为你要上传的本地文件路径 UploadMedia(apiUrl, localFilePath); ``` 在这个例子中,我们首先创建了HttpClient实例,然后构造了一个MultipartFormDataContent,添加了文件内容,并设置了它的名称为"media"。接着发送POST请求到指定的URL,如果成功,响应状态码会表示上传结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值