这是我在本地模拟的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 服务的方法应该怎么取到流里面的文本值和文件数据并保存入服务器端?有什么方法吗?自己没有头绪!
{
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 服务的方法应该怎么取到流里面的文本值和文件数据并保存入服务器端?有什么方法吗?自己没有头绪!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货