C#使用Multipart form-data方式上传文件及提交其他数据

  C#使用Multipart form-data方式上传文件及提交其他数据



C# Code:

/// <summary>
/// C#使用form-data方式上传文件及提交其他数据
/// </summary>
/// <param name="url">接口地址</param>
/// <param name="model">参数模型</param>
/// <returns></returns>
public static string PostFormData(string url, HXQPrivateContractRequest model)
{
  
//PDF文件路径
  
string filePath = model.pdfFile;
  
  
using (var client = new HttpClient())
  {
    List
<ByteArrayContent> list = new List<ByteArrayContent>();
    
    
//title:参数
    
var dataContent = new ByteArrayContent(Encoding.UTF8.GetBytes(model.title));
    dataContent.Headers.ContentDisposition
= new ContentDispositionHeaderValue("form-data")
    {
      Name
= "title"
      };
      list.Add(dataContent);
      
      
//keyword:参数
      
var dataContent2 = new ByteArrayContent(Encoding.UTF8.GetBytes(model.keyword));
      dataContent2.Headers.ContentDisposition
= new ContentDispositionHeaderValue("form-data")
      {
        Name
= "keyword"
        };
        list.Add(dataContent2);
        
        
//logUserPhone:参数
        
var dataContent3 = new ByteArrayContent(Encoding.UTF8.GetBytes(model.logUserPhone));
        dataContent3.Headers.ContentDisposition
= new ContentDispositionHeaderValue("form-data")
        {
          Name
= "logUserPhone"
          };
          list.Add(dataContent3);
          
          
//处理文件内容
          
List<ByteArrayContent> list2 = new List<ByteArrayContent>();
          
          
byte[] bmpBytes = File.ReadAllBytes(filePath);
          
          
var fileContent = new ByteArrayContent(bmpBytes);//填充图片字节
          
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
          {
            Name
= "files",//Name = "file"
            
FileName = Path.GetFileName(filePath)
            };
            list.Add(fileContent);
            
            
using (var content = new MultipartFormDataContent())
            {
              Action
<List<ByteArrayContent>> act = (dataContents) =>
              {
//声明一个委托,该委托的作用就是将ByteArrayContent集合加入到MultipartFormDataContent中
              
foreach (var byteArrayContent in dataContents)
              {
                content.Add(byteArrayContent);
              }
              };
              act(list);
//执行act
              
try
              {
                
var result = client.PostAsync(url, content).Result;//post请求
                
string data = result.Content.ReadAsStringAsync().Result;
                
return data;//返回操作结果
                
}
                
catch (Exception ex)
                {
                  
return ex.Message;
                }
              }
            }
          }
          
          
          
//来源:C/S框架网 | www.csframework.com | QQ:23404761




C# Code:

public class HXQPrivateContractRequest
{
  
  
public string pdfFile { get; set; }
  
public string title { get; set; }
  
public string keyword { get; set; }
  
public string logUserPhone { get; set; }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

C#使用Multipart form-data方式文件提交其他数据
ASP.NET WebApi框架异步实现MultipartContent方式文件
CSFramework.AutoUpgrader文件升级包测试报告
C# ASP.NET 实现文件断点续
Web端使用VUE调用WebApi接口实现用户登录采用Token方式数据交互
Asp.Net FileUpload类实现文件(C/S框架网开源)
WebApi使用HttpClient.PostAsync文件报错解决方案
CSFramework.WebApi框架实现阿里云OSS、下载、删除文件功能
使用dalBaseDataDict类提交单表数据
尝试释放正在使用的RCW,活动线程或其他线程正在使用该RCW
C#.Net 图片,限制图片大小,检查类型完整版
使用bllBaseDataDict类提交业务单据(主从表)的明细表实例|C/S框架网
图片资源下载WebApi服务器
WebService架构提交数据-生成仅包含修改了字段的数据表
Asp.Net防止多次提交数据(转)
使用SqlCommand提交数据:命令的Transaction 属性尚未初始化
[原创] 使用Tcp/Ip下载文件(图)
IDatabase接口使用方式
C#,Asp.Net多线程断点续下载
DbDataUpdate - 自动提交对象模型数据 - 常用数据类型测试