微信上传永久素材报错41005

百炼成宠 2015-07-27 01:22:20


string wxurl = "http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + Access_Token;

string filepath = Server.MapPath("image/" + fileName);
//string filepath = @"C:\Users\cdkj\Desktop\weixin\微信练习\image\6.jpg";
FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fileStream);
byte[] buffer = br.ReadBytes(Convert.ToInt32(fileStream.Length));

string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求
WebRequest req = WebRequest.Create(wxurl + "&type=" + ImgUpload.PostedFile.ContentType);
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//string media = "{Content-Disposition: form-data;\"filename\":\"" + fileName + "\",\"filelength\":\"" + ImgUpload.PostedFile.ContentLength.ToString() +
// "\",\"content-type\":\"image\"}";
StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"media\";filelength=\"{1}\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName, ImgUpload.PostedFile.ContentLength));
//StringBuilder sb = new StringBuilder();
//sb.Append("Content-Disposition: form-data; name=\"media\"; filename=\"" + fileName +
// "\"; filelength=\"" + ImgUpload.PostedFile.ContentLength.ToString() + "\";");
//sb.Append("\r\n");
//sb.Append("Content-Type: " + ImgUpload.PostedFile.ContentType);
//sb.Append("\r\n\r\n");
string head = sbHeader.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

//post总长度
long length = form_data.Length + fileStream.Length + foot_data.Length;

req.ContentLength = length;

Stream requestStream = req.GetRequestStream();
//这里要注意一下发送顺序,先发送form_data > buffer > foot_data
//发送表单参数
requestStream.Write(form_data, 0, form_data.Length);
//发送文件内容
requestStream.Write(buffer, 0, buffer.Length);
//结尾
requestStream.Write(foot_data, 0, foot_data.Length);

requestStream.Close();
fileStream.Close();
fileStream.Dispose();
br.Close();
br.Dispose();
//响应
WebResponse pos = req.GetResponse();
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
string html = sr.ReadToEnd().Trim();
sr.Close();
sr.Dispose();
if (pos != null)
{
pos.Close();
pos = null;
}
if (req != null)
{
req = null;
}

两种方式都不行。始终返回41005,求大神指点。。。
...全文
5513 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello Worlds 2017-05-09
  • 打赏
  • 举报
回复
本人用java开发的 成功过一次 让后就没了,还在纠结中。 {"url":"http:\/\/mmbiz.qpic.cn\/mmbiz_jpg\/ibnHSBaTpzTrtibJCKbpW2Q03Nwico6lt197PGQwXMrGLCSb3tkcAx8JujWKMfjJw7reLMgcmDj2fF1mu7iaPZByww\/0"} 同样的方法 就不行 好无奈 一直是 媒体数据缺失
qq_20240251 2016-07-23
  • 打赏
  • 举报
回复
$data = array('media' => curl_file_create('D:\wamp64\www\demo\bg.jpg')); $ret = $weObj->uploadMedia($data,wechat::MSGTYPE_IMAGE); 本人亲测, 是PHP版本问题! 在PHP5.6.16上测试通过 参考贴: http://blog.csdn.net/hongtu1993/article/details/40784355 有问题请联系我的qq 18239256
accpbl0330 2016-04-21
  • 打赏
  • 举报
回复
StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name=\"media\";filelength=\"{1}\";filename=\"{0}\"\r\nContent-Type:application/octet-stream\r\n\r\n", fileName, fs.Length)); 一定要加name="media“ 和 filelength 长度
accpbl0330 2016-04-21
  • 打赏
  • 举报
回复
同样问题 关注
阿释密达丶 2016-04-19
  • 打赏
  • 举报
回复
有没有解决了的大神啊,该怎么弄
lindardeng 2016-03-29
  • 打赏
  • 举报
回复
加了类型,也是一直报错,找不到多媒体文件。。
yyoinge 2016-01-16
  • 打赏
  • 举报
回复
问题产生的原因是微信的帮助文档说明不够详细 不管是总数受限的永久素材接口: https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=ACCESS_TOKEN 还是图文中总数不受限的图片素材接口: https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN 在接口url的access_token后面都必须带上素材类型 [图片(image)、语音(voice)、视频(video)和缩略图(thumb)\ 如图片: &type=image
hikklong 2016-01-11
  • 打赏
  • 举报
回复
@qq971854841,你实现的接口,是另外一个接口:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token= 永久素材接口:https://api.weixin.qq.com/cgi-bin/material/add_material?access_token= 就是永久的接口貌似一直报错
qq971854841 2015-12-18
  • 打赏
  • 举报
回复



WebClient wxUpload = new WebClient();
string uploadPath = "~/Images/";
string folder = Server.MapPath(uploadPath);
//自动创建目录
if (!Directory.Exists(folder))
{
Directory.CreateDirectory(folder);
}
HttpPostedFile file = Request.Files.Get(0);
string filename = folder + file.FileName;
file.SaveAs(filename);
//API所需的媒体信息
wxUpload.Headers.Add("Content-Type", file.ContentType);
wxUpload.Headers.Add("filename", file.FileName);
wxUpload.Headers.Add("filelength", file.ContentLength.ToString());
byte[] result =
wxUpload.UploadFile(
new Uri(string.Format(
"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={0}&type={1}",
AnalysisXmlMsg.GetAccessToken("appid", "appsecret"),
"image")), filename);
string resultjson = Encoding.UTF8.GetString(result); //在这里获取json数据,获得图片URL


搞了好久 在几分钟前实现了 上传永久素材 返回图片的URL 语言C#
qq_16981339 2015-11-20
  • 打赏
  • 举报
回复
请问下这个问题解决了吗? 很急 能不能帮忙下 QQ653006728
正怒月神 版主 2015-10-14
  • 打赏
  • 举报
回复
我用的是 方培工作室的 上传类库。你们看一下
http://www.cnblogs.com/szw/p/3764267.html 里面有一个 多媒体接口。不过详细的代码,你们需要下载一下。
那棵树很高 2015-10-13
  • 打赏
  • 举报
回复
我一样的问题呀,楼主的方法也试了,网站的方法也试了,都是显示41005错误
 using (WebClient client = new WebClient())
{
byte[] b = client.UploadFile(url, filepath);
string retdata = Encoding.Default.GetString(b);
if (retdata.Contains("media_id"))
{
return JsonConvert.DeserializeObject<UpLoadInfo>(retdata);
}
else
{

Message.Insert(new Message(MessageType.Exception, retdata));
return null;
}
}
ts1027 2015-08-06
  • 打赏
  • 举报
回复
有没有大神帮忙看看啊。上面的代码是我用的两种方式,直接贴代码的还是从微信官网看的。还是不行。
ts1027 2015-08-06
  • 打赏
  • 举报
回复
用错号了。。忘了不是登的自己的号了
ts1027 2015-08-06
  • 打赏
  • 举报
回复
引用 6 楼 u014060754 的回复:
说在输入流后面加上\r\n也加了。说name=media。也试过了。还是返回说缺少多媒体文件
没有解决
百炼成宠 2015-07-27
  • 打赏
  • 举报
回复
说在输入流后面加上\r\n也加了。说name=media。也试过了。还是返回说缺少多媒体文件
百炼成宠 2015-07-27
  • 打赏
  • 举报
回复
引用 3 楼 x556549 的回复:
具体一点的原因呢?你报一个数字有什么用啊
41005 缺少多媒体文件数据。就是这个错误
百炼成宠 2015-07-27
  • 打赏
  • 举报
回复
41005 缺少多媒体文件数据。就是这个错误。是上传微信服务器之后返回的全局码
x556549 2015-07-27
  • 打赏
  • 举报
回复
具体一点的原因呢?你报一个数字有什么用啊
百炼成宠 2015-07-27
  • 打赏
  • 举报
回复
都没有人啊,第一次发帖子。。
加载更多回复(1)

62,248

社区成员

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

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

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

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