這期內容當中小編將會給大家帶來有關如何在C# 項目中利用HttpClient實現一個文件上傳功能,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
HttpClient和MultipartFormDataContent(傳送門)最低適用于.NET Framework 4.5版本
using (HttpClient client = new HttpClient())
{
var content = new MultipartFormDataContent();
//添加字符串參數,參數名為qq
content.Add(new StringContent("123456"), "qq");
string path = Path.Combine(System.Environment.CurrentDirectory, "1.png");
//添加文件參數,參數名為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();
});
}注意:如果要通過參數形式接收數據,需要確保參數名稱和上面發送請求中設置的名稱一致,否則無法自動綁定到參數中,且需要給參數加上[FromForm]的標記。
public class SaveFileModel
{
public string qq { get; set; }
public IFormFile File { get; set; }
}
public async Task<JsonResult> SaveFile([FromForm]SaveFileModel model)
{
//......
}public async Task<JsonResult> SaveFile()
{
return await Task.Run(() =>
{
var files = HttpContext.Request.Form.Files;
var qq = HttpContext.Request.Form["qq"];
//......
});
}上述就是小編為大家分享的如何在C# 項目中利用HttpClient實現一個文件上傳功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。