C# 后台POST提交方式
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;
}
C# 后台POST提交方式的更多相关文章
- 后台获取POST方式提交的JSON格式数据
1.直接使用request.getParamater()的方法获取(这种取参方式对于POST和GET的提交方式均适用): 2.通过请求体的IO流获取参数(这种方式只能用于POST,因为GET方式没有请 ...
- Dedecms自定义表单后台列表展现方式更改
Dedecms有自定义表单功能,方便我们收集用户信息.个人通常喜欢拿这个功能做问卷调查,在线留言等功能.但是如果使用过这个功能的朋友就会知道,Dedecms自定义表单后台列表展现方式并不好看. 上面就 ...
- 今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式
今天在研究jquery用ajax提交form表单中得数据时,学习到了一种新的提交方式 jquery中的serialize() 方法 该方法通过序列化表单值,创建 URL 编码文本字符串 序列化的值可在 ...
- [置顶] 网页提交方式post和get的区别和联系
都知道GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.但具体区别呢?可以互换吗? 主要区别有:1传输数据的方式不同,2传输的数据多少不同,3传输数据的安全性不同4,后台获取数据的方式 ...
- 关于Ajax的type为post提交方式出现请求失效问题
最近碰到这样一个问题,原本一个ajax异步提交数据之前是很好的,很多系统都延用了均未出现任何问题.最近这个版本却出现ajax方式post数据不到后台程序,让我折腾了好几天.起初的ajax是这样写的: ...
- POST不同提交方式对应的Content-Type,及java服务器接收参数方式
POST不同提交方式对应的Content-Type,及java服务器接收参数方式 注:本博客参考了网上的文章结合自己工作总结后所写,主要用于记录自己工作所得,如有错误请批评指正. 简介: Conten ...
- 利用 ajax自定义Form表单的提交方式
需求场景:有时候单纯的form表单无法向后端传递额外的参数 比如需要action传递js异步生成的参数 ,form表单默认的action就无法满足需求,这时就需要我们自定义form表单的提交方式. h ...
- React前端框架路由跳转,前端回车事件、禁止空格、提交方式等方法
react router - historyhistory.push() 方法用于在JS中实现页面跳转history.go(-1) 用来实现页面的前进(1)和后退(-1) 访问js连接后+?v1清缓存 ...
- springMVC怎么改变form的提交方式为put或者delete
想着练习一下创建restful风格的网站呢,结果发现在jsp页面上并不能灵活使用put和delete提交方式.下面我的解决办法 一. form 只支持post和get两种提交方式,只支持get提交方式 ...
随机推荐
- 【c++】简单的string类的几个基本函数
// string的几个基本函数的实现 #include <iostream> #include <assert.h> #include <string.h> us ...
- 利用FFmpge进行视频压缩(从图像到H264视频流)
对于FFmpeg相信做视频或图像处理这一块的都不会陌生,在网上也能找到非常多相关的代码.但因为版本号不同等原因.往往找到的代码都是须要自行改动才干够用,为此本人希望能尽绵薄之力,将开发包和自行编写的代 ...
- LeetCode 349. Intersection of Two Arrays (两个数组的相交)
Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...
- USRP通信的结构体和常量(上位机、下位机共用)
fw_common.h包括了USRP固件和上位机共用的代码,寄存器地址映射.结构体定义等 #include <stdint.h> /*! * Structs and constants f ...
- CI框架下CSS和JS的路径问题
注意:CI框架下的CSS和JS的引用必须放在框架外面,比如,可建立resource文件夹与application同级,用来封装CSS和JS. 在view层用resource里面CSS和JS可采用以下几 ...
- YTU 2795: 编程题AB-侦察员的密码
2795: 编程题AB-侦察员的密码 时间限制: 1 Sec 内存限制: 128 MB 提交: 155 解决: 43 题目描述 侦察员小甲在被捕前在墙上写了两行文字(ASCII字符),其中包含了他 ...
- RAID5配置及服务器2003系统安装方法。2000系统的安装要使用7.9版本的引导盘
服务器2003系统安装方法.2000系统的安装要使用7.9版本的引导盘 RAID5配置: 1.为新到的惠普DL380服务器装系统,首先要配置RAID阵列. 如下图进行配置. 启动到如上图阶段,按F8. ...
- php实现下载
PHP实现下载文件的两种方法.分享下,有用到的朋友看看哦. 方法一: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php /** * 下载文件 * ...
- BZOJ 2506 分块
//By SiriusRen #include <bits/stdc++.h> using namespace std; ; ][],g[N],tmp=; struct Node{int ...
- ACM_堆箱子咯(栈)
堆箱子咯 Time Limit: 2000/1000ms (Java/Others) Problem Description: 双十一大家都在买买买,可忙坏了快递小哥了.zl和皮卡鸡在大伙在剁手的时候 ...