1、第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据;

using (var reqConts = new MultipartFormDataContent())
{
for (int i = ; i < colletion.Count; i++)
{
HttpPostedFileBase file = colletion[i];
string extName = Path.GetExtension(file.FileName);
string fileName = Guid.NewGuid().ToString() + extName;
var stream = new StreamReader(file.InputStream).BaseStream;
var streamCont = new StreamContent(stream);
streamCont.Headers.ContentType = MediaTypeHeaderValue.Parse("multipart/form-data");//image/*
streamCont.Headers.ContentLength = stream.Length;
reqConts.Add(streamCont, "image_binary" + i, fileName);
}
var respone = client.PostAsync(uploadUrl, reqConts).Result.Content.ReadAsStringAsync();
var res = respone.Result;
Basics.LogFun.Instance().WriteLog(LogFunType.SystemErrLog, "接收发送请求结果:" + res);
JsonSerializer serializer = new JsonSerializer();
using (var jsonReader = new JsonTextReader(new StringReader(respone.Result)))
{
Result crrresult = serializer.Deserialize<Result>(jsonReader);
if (crrresult.Success) {
return Content(ReturnMessage(true, "处理成功"));
}
}
}

2、第二种方式,自己组装,参考代码如下

private string postFile(HttpFileCollectionBase httpFileCollection, string postUrl)
{ string encrypt = "f933797503d6e2c36762428a280e0559";
string boundary = "";
#region 定义请求体中的内容 并转成二进制
string Enter = "\r\n"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(postUrl);
request.Method = "POST";
request.ContentType = "multipart/form-data;boundary=--------------------------" + boundary;
request.Accept = "*/*"; Stream myRequestStream = request.GetRequestStream();//定义请求流 for (int i = ; i < httpFileCollection.Count; i++)
{
HttpPostedFileBase file = httpFileCollection[i];
string extName = Path.GetExtension(file.FileName);
string fileName = Guid.NewGuid().ToString() + extName; Stream fileStream = file.InputStream;
byte[] fileContentByte = new byte[fileStream.Length]; // 文件内容二进制
fileStream.Read(fileContentByte, , fileContentByte.Length);
fileStream.Close(); string fileContentStr = Enter + "----------------------------" + boundary + Enter
+ "Content-Type:image/*" + Enter
+ "Content-Disposition: form-data; name=\"image_binary" + i.ToString() + "\"; filename=\"" + fileName + "\"" + Enter + Enter; var fileContentStrByte = Encoding.UTF8.GetBytes(fileContentStr);//fileContent一些名称等信息的二进制(不包含文件本身) myRequestStream.Write(fileContentStrByte, , fileContentStrByte.Length);
myRequestStream.Write(fileContentByte, , fileContentByte.Length);
}
string encryptStr = Enter + "----------------------------" + boundary + Enter
+ "Content-Disposition: form-data; name=\"encrypt\"" + Enter + Enter
+ encrypt + Enter + "--" + boundary + "--"; var encryptStrByte = Encoding.UTF8.GetBytes(encryptStr);//encrypt所有字符串二进制 myRequestStream.Write(encryptStrByte, , encryptStrByte.Length); #endregion HttpWebResponse response = (HttpWebResponse)request.GetResponse();//发送 Stream myResponseStream = response.GetResponseStream();//获取返回值
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close(); return retString;
}

最新文章

  1. Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
  2. Java基础语法总结2
  3. poj 1701【数学几何】
  4. Swagger 使用方法
  5. CSS文本溢出显示省略号
  6. 介绍50个 WordPress 动作挂钩
  7. Linux程序设计笔记
  8. Git如何检出指定目录或文件
  9. xml的SAX解析规则
  10. mac/Linux/centos ssh连接服务器以及跳板机,实现类型Xshell 功能
  11. Python2.X和Python3.X中Tkinter模块的文件对话框、下拉列表的不同
  12. 汉明码(Hamming)编码与纠错原理
  13. js 元素大小缩放实例
  14. Pyhon流程控制
  15. MySQL数据库-pymysql模块操作数据库
  16. _itemmod_extra_equipments_enable
  17. kafka的API操作
  18. 2018.06.30 BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)
  19. OracleLinux安装说明
  20. 十七、ThreadPoolExecutor线程池

热门文章

  1. jQuery的立即调用表达式
  2. jquery动态创建form表单
  3. Codeforces Round #272 (Div. 2)C. Dreamoon and Sums 数学推公式
  4. 【树剖求LCA】树剖知识点
  5. bzoj 3721 Final Bazarek
  6. jqxtree异步加载部门树
  7. switchhosts+fiddler app抓包
  8. 如何获得Windows聚焦壁纸0726
  9. action=&quot;post&quot; 、 servletconfig 、 servletcontext 、getPrintWiter() 、context-param、 init-param(第一个完整的servlet)
  10. 2 我们的C#学习方法