上传文件用WebClient类和HttpWebRequest类都可以,但用WebClient无法获取服务器端的返回内容,至少我没发现有什么方法 HttpWebRequest类代码:
// 构造发送数据
StringBuilder sb = new StringBuilder();
// 文件域的数据
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"upload_file\";filename=\"image.wav\"");
sb.Append("\r\n");
sb.Append("Content-Type: ");
sb.Append("audio/wav");
sb.Append("\r\n\r\n");
string postHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);
requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
requestStream.Write(bSendingFile, 0, bSendingFile.Length);
byte[] b3 = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "--");
requestStream.Flush();
多上传的stream进行组装
// 返回用于将数据写入某 URI 资源的 Stream
Stream requestStream = request.EndGetRequestStream(result);// 构造发送数据
StringBuilder sb = new StringBuilder();
// 文件域的数据
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"upload_file\";filename=\"image.wav\"");
sb.Append("\r\n");
sb.Append("Content-Type: ");
sb.Append("audio/wav");
sb.Append("\r\n\r\n");
string postHeader = sb.ToString();
byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);
requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
requestStream.Write(bSendingFile, 0, bSendingFile.Length);
byte[] b3 = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "--");
requestStream.Write(b3, 0, b3.Length);
requestStream.Flush();
requestStream.Close();