欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 使用HttpClient上傳文件并附帶其他參數(shù)的步驟

 更新時間:2020年12月14日 09:14:39   作者:傅小灰  
這篇文章主要介紹了C# 使用HttpClient上傳文件并附帶其他參數(shù)的步驟,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下

HttpClientMultipartFormDataContent(傳送門)最低適用于.NET Framework 4.5版本

發(fā)送端代碼

using (HttpClient client = new HttpClient())
{
  var content = new MultipartFormDataContent();
  //添加字符串參數(shù),參數(shù)名為qq
  content.Add(new StringContent("123456"), "qq");

  string path = Path.Combine(System.Environment.CurrentDirectory, "1.png");
  //添加文件參數(shù),參數(shù)名為files,文件名為123.png
  content.Add(new ByteArrayContent(System.IO.File.ReadAllBytes(path)), "file", "123.png");

  var requestUri = "http://192.168.1.108:56852/api/Test/SaveFile";
  var result = client.PostAsync(requestUri, content).Result.Content.ReadAsStringAsync().Result;

  Console.WriteLine(result);
}

接收端代碼

[HttpPost]
public async Task<JsonResult> SaveFile([FromForm]string qq, IFormFile file)
{
  return await Task.Run(() =>
  {
    try
    {
      //保存文件到本地
      var filefullPath = Path.Combine(Directory.GetCurrentDirectory(), file.FileName);
      using (FileStream fs = new FileStream(filefullPath, FileMode.Create))
      {
        file.CopyTo(fs);
        fs.Flush();
      }
    }
    catch (Exception ex)
    {
      return Fail(file.FileName + "---" + ex.Message);
    }
    return Success();
  });
}

注意:如果要通過參數(shù)形式接收數(shù)據(jù),需要確保參數(shù)名稱和上面發(fā)送請求中設(shè)置的名稱一致,否則無法自動綁定到參數(shù)中,且需要給參數(shù)加上[FromForm]的標(biāo)記。

使用model對象接收數(shù)據(jù)

public class SaveFileModel
{
  public string qq { get; set; }
  public IFormFile File { get; set; }
}
public async Task<JsonResult> SaveFile([FromForm]SaveFileModel model)
{
  //......
}

使用HttpContext從請求的Form中獲取數(shù)據(jù)

public async Task<JsonResult> SaveFile()
{
  return await Task.Run(() =>
  {
    var files = HttpContext.Request.Form.Files;
    var qq = HttpContext.Request.Form["qq"];
    //......
  });
}

總結(jié)

這個問題是在寫一個.Net Core項目時遇到的,以前在.Net Framework 4.0的時候,使用string拼接表單中文件的內(nèi)容,到處都是boundary分界線。用MultipartFormDataContent來進行表單提交上傳文件是它內(nèi)部幫我們拼接了這個復(fù)雜的內(nèi)容。(可以用Fiddler抓一下請求看看)emm...我去找一下當(dāng)初是怎么弄的文件上傳,如果有再更新此文。

以上就是C# 使用HttpClient上傳文件并附帶其他參數(shù)的步驟的詳細內(nèi)容,更多關(guān)于C# 使用HttpClient上傳文件的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#讀取靜態(tài)類常量屬性和值的實例講解

    C#讀取靜態(tài)類常量屬性和值的實例講解

    在本篇文章里小編給各位分享的是關(guān)于C#讀取靜態(tài)類常量屬性和值的實例講解,有興趣的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • Unity游戲開發(fā)中的設(shè)計模式之策略模式

    Unity游戲開發(fā)中的設(shè)計模式之策略模式

    策略模式是Unity游戲開發(fā)中常用的設(shè)計模式之一,用于封裝一系列算法或行為,并使這些算法或行為可以相互替換。通過策略模式,可以在運行時動態(tài)地選擇算法或行為,實現(xiàn)游戲中的多樣性和可擴展性。常見的應(yīng)用包括AI行為、武器攻擊、移動方式等
    2023-05-05
  • C#四種計時器Timer的區(qū)別和用法

    C#四種計時器Timer的區(qū)別和用法

    這篇文章介紹了C#四種計時器Timer的區(qū)別和用法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#中調(diào)用MySQL存儲過程的方法

    C#中調(diào)用MySQL存儲過程的方法

    這篇文章主要介紹了C#中調(diào)用MySQL存儲過程的方法,涉及C#數(shù)據(jù)庫操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C#操作Word打印的示例

    C#操作Word打印的示例

    這篇文章主要介紹了C#操作Word打印的示例,幫助大家利用c#打印文件,提高辦公效率,感興趣的朋友可以了解下
    2020-10-10
  • .net4.5使用async和await異步編程實例

    .net4.5使用async和await異步編程實例

    .net4.5使用async和await異步編程實例,大家參考使用吧
    2013-12-12
  • C#實現(xiàn)異步發(fā)送郵件的方法

    C#實現(xiàn)異步發(fā)送郵件的方法

    這篇文章主要介紹了C#實現(xiàn)異步發(fā)送郵件的方法,涉及C#異步操作與郵件發(fā)送的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • C# MVC 微信支付教程系列之公眾號支付代碼

    C# MVC 微信支付教程系列之公眾號支付代碼

    本篇文章主要介紹了C# MVC 微信支付教程系列之公眾號支付代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 實例代碼講解c# 線程(下)

    實例代碼講解c# 線程(下)

    這篇文章主要介紹了c# 線程的的相關(guān)資料,文中示例代碼非常細致,對大家的學(xué)習(xí)有很大幫助,感興趣的朋友可以了解下
    2020-06-06
  • C#實現(xiàn)學(xué)生模塊的增刪改查

    C#實現(xiàn)學(xué)生模塊的增刪改查

    這篇文章主要為大家詳細介紹了C#實現(xiàn)學(xué)生模塊的增刪改查,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論