本地模拟POST提交图片数据,问下服务端该如何取到这个图片数据?

kasumi_kxq 2012-06-27 11:22:21
这是我在本地模拟的POST提交文本和图片数据的代码

protected void btnOK_Click(object sender, EventArgs e)
{
string fileName = @"C:\Users\Alex\Desktop\Photo\Test.jpg";
string boundary = "-----------------------------7d6bb34502ce";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost/WcfRestDataSrv/MHDoctorSrv/UserUpdateFormPostFile");
request.Method = "POST";
request.ContentType = "multipart/form-data; boundary=" + boundary;

StringBuilder sb = new StringBuilder();

sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"id\"");
sb.Append("\r\n\r\n");
sb.Append(this.txtURID.Text.Trim());
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"token\"");
sb.Append("\r\n\r\n");
sb.Append(this.txtToken.Text.Trim());
sb.Append("\r\n");

sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"icon\";filename=\"" + fileName + "\"");
sb.Append("\r\n");
sb.Append("Content-Type: ");
sb.Append("image/pjpeg");
sb.Append("\r\n\r\n");

string postHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);
byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");

FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
long length = postHeaderBytes.Length + fs.Length + boundaryBytes.Length;
request.ContentLength = length;
Stream reqStream = request.GetRequestStream();
reqStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
byte[] buffer = new byte[fs.Length];
int bytesRead = 0;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
reqStream.Write(buffer, 0, bytesRead);
}
reqStream.Write(boundaryBytes, 0, boundaryBytes.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string str;
using (StreamReader reader = new StreamReader(resStream))
{
str = reader.ReadToEnd();
}
}




这里是我 WCFREST 服务的方法


[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
public User UserUpdateFormPostFile(Stream input)
{
StreamReader sr = new StreamReader(input);
string str = sr.ReadToEnd();
}


服务端我看了下可以取到流,并且里面的数据转成字符串看了下是这种格式的
-------------------------------7d6bb34502ce\u000d\u000aContent-Disposition: form-data; name=\"id\"\u000d\u000a\u000d\u000a10\u000d\u000a-------------------------------7d6bb34502ce\u000d\u000aContent-Disposition: form-data; name=\"token\"\u000d\u000a\u000d\u000ab10da96b6853218a3bb39fcf7264876f\u000d\u000a-------------------------------7d6bb34502ce\u000d\u000aContent-Disposition: form-data; name=\"icon\";filename=\"C:\\Users\\Alex\\Desktop\\Photo\\Test.jpg\"\u000d\u000aContent-Type: image\/pjpeg\u000d\u000a\u000d\u000a????\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000`\u0000`\u0000\u0000??\u0000C\u0000\u0003\u0002\u0002\u0003\u0002\u0002\u0003\u0003\u0003\u0003\u0004\u0003\u0003\u0004\u0005\u0008\u0005\u0005\u0004\u0004\u0005\u000a\u0007\u0007\u0006\u0008\u000c\u000a\u000c\u000c\u000b\u000a\u000b\u000b\u000d\u000e\u0012\u0010\u000d\u000e\u0011\u000e\u000b\u000b\u0010\u0016\u0010\u0011\u0013\u0014\u0015\u0015\u0015\u000c\u000f
当中省略
\u0019?j?\u0008?i??7Ji??\u0001??'5!?P7?\u0015?$F<?\u0009?<???h?cZ?&???3??1??a????Tm?Bc\u000fZa??j3?\u0008c\u001c?c\u0013O~?\u001bU?\u001a?c\u001asu?7Z?\u00105?\u00050?\u0014????\u0001\u0019<f?;??\u0000\u0013???~\u001e??10??q???\u0011?\u0014??v??\u0006????pb?\u0014q?)???+?]Q?aq????S??l?.??Q?\u001f?M??Y\u001ex???\u001b?=??\u0007Z?\u0004oLj{?\u001b?h?Dlpi??t??Q?J?\u0014#u??J}1?U?\u0006?\u00052?z?;\u001a?\u0004T???4??hY\u0019\u00194?wsMn?`??\u000d\u000a-------------------------------7d6bb34502ce\u000d\u000a


我的问题是服务端 WCFREST 服务的方法应该怎么取到流里面的文本值和文件数据并保存入服务器端?有什么方法吗?自己没有头绪!
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
貌似你post的格式不正确
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
Request.Files[0].SaveAs(Server.MapPath("~/xx,jpg"))
jackq28 2012-09-19
  • 打赏
  • 举报
回复
请问这一串\u001b\u0003\u0005\u001ce\u0014\u0012\u000b\u000b\u000b是什么?

62,046

社区成员

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

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

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

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