C# 后台POST提交方式
2024-08-31 00:48:37
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;
}
最新文章
- Java多线程系列--“JUC锁”11之 Semaphore信号量的原理和示例
- Java基础语法总结2
- poj 1701【数学几何】
- Swagger 使用方法
- CSS文本溢出显示省略号
- 介绍50个 WordPress 动作挂钩
- Linux程序设计笔记
- Git如何检出指定目录或文件
- xml的SAX解析规则
- mac/Linux/centos ssh连接服务器以及跳板机,实现类型Xshell 功能
- Python2.X和Python3.X中Tkinter模块的文件对话框、下拉列表的不同
- 汉明码(Hamming)编码与纠错原理
- js 元素大小缩放实例
- Pyhon流程控制
- MySQL数据库-pymysql模块操作数据库
- _itemmod_extra_equipments_enable
- kafka的API操作
- 2018.06.30 BZOJ4443: [Scoi2015]小凸玩矩阵(二分加二分图匹配)
- OracleLinux安装说明
- 十七、ThreadPoolExecutor线程池
热门文章
- jQuery的立即调用表达式
- jquery动态创建form表单
- Codeforces Round #272 (Div. 2)C. Dreamoon and Sums 数学推公式
- 【树剖求LCA】树剖知识点
- bzoj 3721 Final Bazarek
- jqxtree异步加载部门树
- switchhosts+fiddler app抓包
- 如何获得Windows聚焦壁纸0726
- action=";post"; 、 servletconfig 、 servletcontext 、getPrintWiter() 、context-param、 init-param(第一个完整的servlet)
- 2 我们的C#学习方法