/// <summary> /// 上傳文件 - 武漢站點 /// </summary> [HttpPost] public IActionResult UploadWH(RequestFileModel model) { var extensionUpper = Path.GetExtension(model.File.FileName).ToUpper().TrimStart('.'); // POST請求,轉發數據 using (var stream = model.File.OpenReadStream()) { var fileType = FileExtension.GetFileType(stream); var flag = FileExtension.CheckExtention(extensionUpper, fileType); if (!flag) { //throw new FileErrorException("請選擇支持的文件格式"); return EvosErrorContentResult("errorFormat", $"請選擇支持的文件格式", fileType, HttpStatusCode.BadRequest); } stream.Seek(0, SeekOrigin.Begin); var result = FileExtension.UploadFileWH(model, stream, _domainConfig.EvosFileSite); return Ok(JsonConvert.DeserializeObject<JObject>(result)); } }
/// <summary> /// /// <summary> /// 轉發文件-武漢文件站點 /// </summary> /// <param name="model"></param> /// <param name="stream"></param> /// <param name="fileSite"></param> /// <returns></returns> public static string UploadFileWH(RequestFileModel model, Stream stream, string fileSite) { ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; string result = ""; byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); var handler = new HttpClientHandler { ServerCertificateCustomValidationCallback = delegate { return true; } }; var webRequest = new HttpClient(handler); using (var multipartFormDataContent = new MultipartFormDataContent()) { var values = new[] { new KeyValuePair<string, string>("id", model.Id??""), new KeyValuePair<string, string>("refId", model.ReFld??""), new KeyValuePair<string, string>("refType", model.RefType??""), new KeyValuePair<string, string>("bventId", model.BventId??""), new KeyValuePair<string, string>("remarks", model.Remarks??""), new KeyValuePair<string, string>("useOriginName", model.UseOriginName.ToString()) }; foreach (var keyValuePair in values) { multipartFormDataContent.Add(new StringContent(keyValuePair.Value), String.Format("\"{0}\"", keyValuePair.Key)); } multipartFormDataContent.Add(new ByteArrayContent(buffer), "file", model.File.FileName); result = webRequest.PostAsync(fileSite, multipartFormDataContent).Result.Content.ReadAsStringAsync().Result; } return result; } }
public class RequestFileModel { public IFormFile File { get; set; } // 如果傳了文件id,則會更新文件內容,如果文件不存在會拋錯 public string Id { get; set; } // 選填,關聯id,根據此字段可以查出業務關聯的所有文件 public string ReFld { get; set; } //:選填,關聯類型,分類字段,用於標識文件的業務類型 public string RefType { get; set; } //:選填,會議id public string BventId { get; set; } //:備注,選填 public string Remarks { get; set; } //: 選填,上傳文件是否使用原名稱,默認是 public bool UseOriginName { get; set; } = true; }