[HttpPost]
public async Task Test()
{
string result = "";
string url = "";
List listStream = new List();
List listContentByte = new List();
List listFileName = new List();
string methodsName = System.Web.HttpContext.Current.Request.Form["methodsName"];
string serverPath = System.Web.HttpContext.Current.Request.Form["serverPath"];
string ArtifactsNum = System.Web.HttpContext.Current.Request.Form["ArtifactsNum"];
string userName = System.Web.HttpContext.Current.Request.Form["userName"];
string guidStr = System.Web.HttpContext.Current.Request.Form["guidStr"];
string routeUrl = System.Web.HttpContext.Current.Request.Form["routeUrl"];
string routeUrl1 = System.Web.HttpUtility.UrlDecode(HttpContext.Current.Request["routeUrl"]);
//Encoding myEncoding = Encoding.GetEncoding("UTF-8"); //gb2312
FilesType filesType = FilesType.General;
HttpFileCollection Files = HttpContext.Current.Request.Files;
string[] allkeys = Files.AllKeys;
for(int i=0;i< allkeys.Length;i++)
{
string filekey = allkeys[i];
string name = Unicode2String(filekey);
string [] namearr= name.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
string filename = string.Join("", namearr);
listFileName.Add(filename);
}
//接收传递过来的数据流
Stream stream = System.Web.HttpContext.Current.Request.InputStream;
StreamReader reader = new StreamReader(stream);
string xml = " ";
StringBuilder strXML = new StringBuilder();
string[] heads = HttpContext.Current.Request.Headers.AllKeys;
string headvalues = HttpContext.Current.Request.Headers.ToString();
while (reader.Peek() >= 0)
{
string line = reader.ReadLine().Trim();//直接读取一行
if (line == null) return null;
if (line == String.Empty) continue;
if (line.StartsWith("
{
xml = line.Trim();
strXML.Append(xml);
}
}
String xmlData = reader.ReadToEnd();
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(strXML.ToString());
listContentByte.Add(bytes);
using (HttpClient client = new HttpClient())
{
Dictionary DicData = new Dictionary();
DicData.Add("MethodName", methodsName);
DicData.Add("ServerPath", serverPath);
DicData.Add("ArtifactsNum", ArtifactsNum.ToString());
DicData.Add("SendTime", DateTime.Now.ToString());
DicData.Add("UserName", userName);
DicData.Add("FileType", filesType.ToString());
DicData.Add("FileGuid", guidStr);
client.MaxResponseContentBufferSize = 2147483647;
client.Timeout = TimeSpan.FromMinutes(30);
MediaTypeWithQualityHeaderValue temp = new MediaTypeWithQualityHeaderValue("application/json") { CharSet = "utf-8" };
client.DefaultRequestHeaders.Accept.Add(temp);//设定要响应的数据格式
using (var content = new MultipartFormDataContent())//表明是通过multipart/form-data的方式上传数据
{
var formDatas = this.GetFormDataByteArrayContent(this.GetNameValueCollection(DicData));//获取键值集合对应
var files = this.GetFileByteArray(listContentByte, listFileName);//获取文件集合对应的ByteArrayContent集合
Action> act = (dataContents) =>
{//声明一个委托,该委托的作用就是将ByteArrayContent集合加入到MultipartFormDataContent中
foreach (var byteArrayContent in dataContents)
{
content.Add(byteArrayContent);
}
};
act(formDatas);
act(files);//执行act
try
{
url = string.Format(routeUrl + "api/Trading/Files/UploadOptimizeFile");
var returnResult = client.PostAsync(url, content).Result;//post请求
if (returnResult.StatusCode == HttpStatusCode.OK)
result = returnResult.Content.ReadAsAsync().Result;
else
result = "30|客户端连接路由端出错,错误代码:" + returnResult.StatusCode.ToString();
}
catch (Exception ex)
{
result = "29|客户端连接超时";
}
}
}
return Ok(result);
}