1. 示例代碼
using System;
using System.IO;
using System.Net.Http;
/// <summary>
/// 下載文件
/// </summary>
/// <param name="serverFileName">服務器上文件名 如 close.png</param>
/// <param name="localFileName">要保存到本地的路徑全名 如:C://Download/close.png</param>
/// <returns></returns>
public static bool DownLoad(string uri, string localFileName)
{
var server = new Uri(uri);
var p = Path.GetDirectoryName(localFileName);
if (!Directory.Exists(p)) Directory.CreateDirectory(p);
// 發起請求並異步等待結果
var httpClient = new HttpClient();
var responseMessage = httpClient.GetAsync(server).Result;
if (responseMessage.IsSuccessStatusCode)
{
using (var fs = File.Create(localFileName))
{
// 獲取結果,並轉成 stream 保存到本地。
var streamFromService = responseMessage.Content.ReadAsStreamAsync().Result;
streamFromService.CopyTo(fs);
return true;
}
}
else
return false;
}
/// <summary>
/// 通過webapi上傳單張圖片文件
/// </summary>
/// <param name="uploadUri">上傳路徑</param>
/// <param name="FullFileNames">圖片文件的字節編碼</param>
/// <param name="FileStars">上傳文件的保存路徑前綴,可null,null則不分文件夾保存</param>
/// <param name="FileNames">上傳文件的保存名稱</param>
/// <returns></returns>
public static List<UploadFile> UploadImageFiles(string uploadUri, byte[] FullFile, string FileStars, string FileNames)
{
// 判斷傳入參數是否正確
if (string.IsNullOrEmpty(uploadUri) || FullFile == null || FileNames == null)
{
Common.WriteLog.Error("上傳文件時傳入參數異常");
return null;
}
// 上傳服務uri
var clineturi = new Uri(uploadUri);
using (var client = new HttpClient())
{
client.Timeout = new TimeSpan(0, 0, 0, 0, Common.RESTTimeOut);
// 以MultipartFormData格式上傳
using (var content = new MultipartFormDataContent())
{
// 文件往content添加一條ByteArrayContent
// 發送二進制內容
var fileContent = new ByteArrayContent(FullFile);
// 設置上傳后保存的前綴路徑和文件名稱(文件名稱如果重復會特殊處理)
fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
if (FileStars != null) fileContent.Headers.ContentDisposition.FileNameStar = FileStars;
fileContent.Headers.ContentDisposition.FileName = FileNames;
content.Add(fileContent);
try
{
// 上傳文件,獲取返回的字符串內容
var result = client.PostAsync(clineturi, content).Result.Content.ReadAsStringAsync().Result;
return Newtonsoft.Json.JsonConvert.DeserializeObject<List<UploadFile>>(result);
}
catch (Exception ex)
{
Common.WriteLog.Error(string.Format("上傳文件出錯!uri={0},FullFileNames={1}", uploadUri, FileStars.ToString()), ex);
return null;
}
}
}
}
2. Http 系列
2.1 發起請求
使用 HttpWebRequest 發起 Http 請求:https://www.cnblogs.com/MichaelLoveSna/p/14501036.html
使用 WebClient 發起 Http 請求 :https://www.cnblogs.com/MichaelLoveSna/p/14501582.html
使用 HttpClient 發起 Http 請求:https://www.cnblogs.com/MichaelLoveSna/p/14501592.html
使用 HttpClient 發起上傳文件、下載文件請求:https://www.cnblogs.com/MichaelLoveSna/p/14501603.html
2.2 接受請求
使用 HttpListener 接受 Http 請求:https://www.cnblogs.com/MichaelLoveSna/p/14501628.html
使用 WepApp 接受 Http 請求:https://www.cnblogs.com/MichaelLoveSna/p/14501612.html
使用 WepApp 處理文件上傳、下載請求:https://www.cnblogs.com/MichaelLoveSna/p/14501616.html