微信协议版上传图片问题问题
public static string HttpPostData(string url, string filePath, string fileName, string fileType, long fileSize, string msg_json, string pass_ticket)
{
string responseContent;
var memStream = new MemoryStream();
var webRequest = (HttpWebRequest)WebRequest.Create(url);
// 边界符
var boundary = "----WebKitFormBoundaryf4FaZBEjzTpYgbNr";
// 设置属性
webRequest.Method = "POST";
//webRequest.Timeout = 0;
webRequest.ContentType = "multipart/form-data; boundary=" + boundary;
// 边界符
var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
// 最后的结束符
var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");
//写入开始边界符
memStream.Write(beginBoundary, 0, beginBoundary.Length);
// 写入字符串的Key
var stringKeyHeader = "\r\n--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"" +
"\r\n\r\n{1}\r\n";
//写入id
var header_id = string.Format(stringKeyHeader, "id", "WU_FILE_0");
var headerbytes_id = Encoding.UTF8.GetBytes(header_id);
memStream.Write(headerbytes_id, 0, headerbytes_id.Length);
//写入name
var header_name = string.Format(stringKeyHeader, "name", fileName);
var headerbytes_name = Encoding.UTF8.GetBytes(header_name);
memStream.Write(headerbytes_name, 0, headerbytes_name.Length);
//写入type
var header_type = string.Format(stringKeyHeader, "type", "image/" + fileType);
var headerbytes_type = Encoding.UTF8.GetBytes(header_type);
memStream.Write(headerbytes_type, 0, headerbytes_type.Length);
//写入lastModifiedDate
var header_lastModifiedDate= string.Format(stringKeyHeader, "lastModifiedDate", "Thu Aug 04 2016 20:37:17 GMT+0800 (中国标准时间)");
var headerbytes_lastModifiedDate = Encoding.UTF8.GetBytes(header_lastModifiedDate);
memStream.Write(headerbytes_lastModifiedDate, 0, headerbytes_lastModifiedDate.Length);
//写入size
var header_size = string.Format(stringKeyHeader, "size", fileSize);
var headerbytes_size = Encoding.UTF8.GetBytes(header_size);
memStream.Write(headerbytes_size, 0, headerbytes_size.Length);
//写入mediatype
var header_mediatype = string.Format(stringKeyHeader, "mediatype", "pic");
var headerbytes_mediatype = Encoding.UTF8.GetBytes(header_mediatype);
memStream.Write(headerbytes_mediatype, 0, headerbytes_mediatype.Length);
//写入uploadmediarequest
var header_up = string.Format(stringKeyHeader, "uploadmediarequest", msg_json);
var headerbytes_up = Encoding.UTF8.GetBytes(header_up);
memStream.Write(headerbytes_up, 0, headerbytes_up.Length);
////写入webwx_data_ticket
//var header_data_ticket = string.Format(stringKeyHeader, "webwx_data_ticket", "gSdqqtayKTVA7M2vHCfE+JZH");
//var headerbytes_data_ticket = Encoding.UTF8.GetBytes(header_data_ticket);
//memStream.Write(headerbytes_data_ticket, 0, headerbytes_data_ticket.Length);
//写入pass_ticket
var header_pass_ticket = string.Format(stringKeyHeader, "pass_ticket", pass_ticket);
var headerbytes_pass_ticket = Encoding.UTF8.GetBytes(header_pass_ticket);
memStream.Write(headerbytes_pass_ticket, 0, headerbytes_pass_ticket.Length);
//写入filename
const string filePartHeader =
"Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" +
"Content-Type: {2}\r\n\r\n";// 写入文件
var header = string.Format(filePartHeader, "filename", fileName, "image/" + fileType);
var headerbytes = Encoding.UTF8.GetBytes(header);
memStream.Write(headerbytes, 0, headerbytes.Length);
var buffer = new byte[1024];
int bytesRead; // =0
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
memStream.Write(buffer, 0, bytesRead);
}
//memStream.Write(file_json, 0, file_json.Length);
// 写入最后的结束边界符
memStream.Write(endBoundary, 0, endBoundary.Length);
webRequest.ContentLength = memStream.Length;
var requestStream = webRequest.GetRequestStream();
memStream.Position = 0;
var tempBuffer = new byte[memStream.Length];
memStream.Read(tempBuffer, 0, tempBuffer.Length);
memStream.Close();
requestStream.Write(tempBuffer, 0, tempBuffer.Length);
requestStream.Close();
var httpWebResponse = (HttpWebResponse)webRequest.GetResponse();
using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(),
Encoding.GetEncoding("utf-8")))
{
responseContent = httpStreamReader.ReadToEnd();
}
fileStream.Close();
httpWebResponse.Close();
webRequest.Abort();
return responseContent;
}
返回结果是
{
"BaseResponse": {
"Ret": 1,
"ErrMsg": ""
}
,
"MediaId": "",
"StartPos": 0,
"CDNThumbImgHeight": 0,
"CDNThumbImgWidth": 0
}
请各位大神看看什么问题,