/// <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;
}