private void buttonUpload_Click(object sender, EventArgs e) { var uploadUrl = textBaseAddress.Text.Trim() + "/upload"; if (Guid.TryParse(textGroupId.Text.ToString(), out Guid groupId)) { var param = new UploadParam() { MD5 = Guid.NewGuid().ToString("N"), GroupId = groupId, }; var location = textLocation.Text.ToString(); Task.Run(async() => await UploadFileAsync(uploadUrl, location, param)); } else { UpdateUploadMsg("群组Id不正确"); } }
/// <summary> /// 上传文件 /// </summary> /// <param name="url"></param> /// <param name="path"></param> /// <returns></returns> public async Task <string> UploadFileAsync(string url, string path, UploadParam fileParam) { Debug.WriteLine("---------------------------------------"); Debug.WriteLine("URL = " + url); //Debug.WriteLine("Content = " + JsonConvert.SerializeObject(fileParam)); Debug.WriteLine("---------------------------------------"); var uploadMessage = ""; try { using (var client = new HttpClient()) { client.SetBearerToken(accessToken); using (var content = new MultipartFormDataContent("Upload----" + DateTime.Now.Ticks.ToString("x"))) { using (var stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read)) { content.Add(new StringContent(fileParam.GroupId.ToString()), "GroupId"); content.Add(new StringContent(fileParam.MD5.ToString()), "MD5"); var streamContent = new StreamContent(stream); streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data") { Name = "file", //上传文件的name标识,用于action参数构造 FileName = Path.GetFileName(path), //上传的文件的名称 }; content.Add(streamContent); try { client.DefaultRequestHeaders.Accept.Clear(); //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders .Accept .Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Connection.Add("Keep-Alive"); using (var httpResponseMessage = await client.PostAsync(url, content)) { var responseContent = ""; if (httpResponseMessage.IsSuccessStatusCode) { responseContent = await httpResponseMessage.Content.ReadAsStringAsync(); uploadMessage = " UploadFileAsync " + httpResponseMessage.StatusCode + "\n" + responseContent; } else { uploadMessage = " UploadFileAsync Failed " + httpResponseMessage.StatusCode; } Debug.WriteLine(uploadMessage); UpdateUploadMsg(uploadMessage); return(responseContent); } } catch (Exception e) { uploadMessage = "UploadFileAsync Exception === " + e.Message; Debug.WriteLine(uploadMessage); UpdateUploadMsg(uploadMessage); return(""); } } } } } catch (Exception e) { uploadMessage = "UploadFileAsync Exception === " + e.Message; Debug.WriteLine(uploadMessage); UpdateUploadMsg(uploadMessage); return(""); } }