C# 用multipart/form-data 提交图片,对方接收不到

我是隔壁老刘啊 2019-09-06 08:44:18
我用ASP.NET 模仿用户登录后提交图片,登录这一块已经完成了,可是提交图片的时候总数返回 资料导入失败。

下面图片是我在页面正常提交图片的信息




下面是我模仿时候提交的信息


下面是代码

#region 将文件转成二进制
byte[] fileContentByte = new byte[1024]; // 文件内容二进制
string filePath = "图片路径..确保能拿到";
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
fileContentByte = new byte[fs.Length]; // 二进制文件
fs.Read(fileContentByte, 0, Convert.ToInt32(fs.Length));
fs.Close();

#endregion
string imgname = "商户协议1";
#region 定义请求体中的内容 并转成二进制
string boundary = "WebKisf2242undary3JNFl4OsfUY7123B";
string Enter = "\r\n";

string docId ="------" + boundary + Enter
+ "Content-Disposition: form-data; name=\"docId\"" + Enter + Enter
+ ""; //感觉就是这个值有问题,当值是 "" 的时候返回 资料导入失败,
//当这个值是 " " 的时候返回资料已经存在,
//只要这个值不是 "" ,都返回资料已经存在,

string docTypes = Enter + "------" + boundary + Enter
+ "Content-Disposition: form-data; name=\"docType\"" + Enter + Enter
+ "" + docType + "";

string docChildTypes =Enter+ "------" + boundary + Enter
+ "Content-Disposition: form-data: name=\"docChildType\"" + Enter + Enter
+ "" + docChildType + "";

string fileContentStr = Enter + "------" + boundary + Enter
+ "Content-Disposition: form-data; name=\"file\"; filename=\"" + imgname + "\"" + Enter
+ "Content-Type: image/jpeg" + Enter + Enter ;

string merInIds = Enter + "------" + boundary + Enter
+ "Content-Disposition: form-data; name=\"merInId\"" + Enter + Enter
+ "" + merInId + "";

string weib = Enter + "------" + boundary + "--" + Enter;


var docChildTypesStrByte = Encoding.UTF8.GetBytes(docChildTypes);
var docIdStrByte = Encoding.UTF8.GetBytes(docId);
var docTypeStrByte = Encoding.UTF8.GetBytes(docTypes);
var merInIdsStrByte = Encoding.UTF8.GetBytes(merInIds);
var fileContentStrByte = Encoding.UTF8.GetBytes(fileContentStr);
var weibStrByte = Encoding.UTF8.GetBytes(weib);

#endregion


HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "multipart/form-data;boundary=----" + boundary;
request.KeepAlive = true;
request.CookieContainer = ZhCook(url, cookmain);

Stream myRequestStream = request.GetRequestStream();//定义请求流

#region 将各个二进制 安顺序写入请求流 modelIdStr -> (fileContentStr + fileContent) -> uodateTimeStr -> encryptStr

myRequestStream.Write(docIdStrByte, 0, docIdStrByte.Length);
myRequestStream.Write(docTypeStrByte, 0, docTypeStrByte.Length);
myRequestStream.Write(docChildTypesStrByte, 0, docChildTypesStrByte.Length);
myRequestStream.Write(fileContentStrByte, 0, fileContentStrByte.Length);
myRequestStream.Write(fileContentByte, 0, fileContentByte.Length);
myRequestStream.Write(merInIdsStrByte, 0, merInIdsStrByte.Length);
myRequestStream.Write(weibStrByte, 0, weibStrByte.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();

...全文
293 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧