微信永久视频上传报错41005 媒体文件丢失

@using (Html.BeginForm("UploadVideo", "AddForeverVideo", FormMethod.Post, new { enctype = "multipart/form-data" })) {
选择上传媒体文件:





}
上面是一个input type为file ,name=“description” id=“description”还有一个submit提交按钮
---------------------------------
上面是前台页面
-------------------------------------------------------------
///
/// 这个借口没有通过
///
///
///
public ActionResult UploadVideo(FormCollection collection)
{
string result = "";
HttpPostedFileBase file = Request.Files[0];
string access_token = pub.GetExistAccessToken();
string localpath = "D:\Simple\MyTest\image\" + file.FileName;
file.SaveAs(localpath);//保存本地用于数据库
result = WXApi.AddForeverVideo(access_token, file, "video");

return Content(result);
}
------------------
上面是控制器代码
------------------------------
public static string MaterialUploads(string accessToken, HttpPostedFileBase isFile, string materialType, string title = "", string introduction = "")
{
string url = "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}";
url = string.Format(url, accessToken, materialType);

        //设置提交表单的名称
        string formName = materialType == "video" ? "description" : "media";

        byte[] datas = null;

        #region 组合正文
        //换行
        string CRLF = "\r\n";

        //边界标识
        string Identification = "----" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

        try
        {
            //生成表单信息
            StringBuilder sb = new StringBuilder();
            sb.Append("--");
            sb.Append(Identification);
            sb.Append(CRLF);
            sb.Append("Content-Disposition: form-data; id=\"" + formName + "\"; name=\"" + formName + "\"; filename=\"" + isFile.FileName + "\"");
            sb.Append(CRLF);
            sb.Append("Content-Type: " + isFile.ContentType.ToLower() + "");
            sb.Append(CRLF);
            sb.Append(CRLF);

            //如果是视频数据,就添加视频标题与视频的描述信息
            if (materialType.ToLower() == "video")
            {
                sb.Append(" description=\"{\"title\":\"" + title + "\", \"introduction\":\"" + introduction + "\"}\"");
                sb.Append(CRLF);
                sb.Append(CRLF);
            }

            //头部与尾部
            string header = sb.ToString();
            string foot = CRLF + "--" + Identification + "--" + CRLF;

            //转为byte[]流
            byte[] headerbytes = Encoding.UTF8.GetBytes(header);
            byte[] footbytes = Encoding.UTF8.GetBytes(foot);

            List<byte> datalist = new List<byte>();

            //转换为btye[]数据流
            Stream stream = isFile.InputStream;
            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, data.Length);

            // 设置当前流的位置为流的开始 
            stream.Seek(0, SeekOrigin.Begin);

            datalist.AddRange(headerbytes);
            datalist.AddRange(data);
            datalist.AddRange(footbytes);

            //组合完整的流数据
            datas = datalist.ToArray<byte>();
        }
        catch (Exception)
        {
            return "正文组合失败";
        }
        #endregion

        return MaterialUploadd(datas, url, Identification);
    }
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
thinkphp微信上传永久素材报41005错误解决办法
thinkphp微信上传永久素材报41005错误说明传参值有误,正确的传参方式如下: 例如: $filepath= "themes/simplebootx/Public/assets/images/banner-inner-fail.jpg"; if(class_exists('\CURLFile')){ $data['media'] = ne
微信上传媒体文件 报41005 解决方案 php的巨坑
此问题是因为php新版本更新,对函数的支持有改变导致的 解决如下 $postMedia = array(); $postMedia['access_token'] = $json->access_token; $postMedia['type'] = 'image'; foreach ($imgs as $img) { fil
关于调用微信上传素材接口返回41005错误的问题
找了网上好多资料都没能解决我的问题,参考了相关的书籍后才发现问题的根源;            41005:缺少多媒体文件,明显就是找不到文件的路径嘛!下面我就贴出我的解决方法!!!
JAVA微信开发, 上传永久素材代码, 以及上传素材失败.&quot;errcode&quot;:41005解决方法
JAVA解决办法:请检查sb.append(&quot;Content-Disposition:form-data;name=\&quot;media\&quot;;filename=\&quot;&quot; + file.getName() + &quot;\&quot;;filelength=\&quot;&quot; + file.length() + &quot;\&quot;\r\n&quot;); 务必保证你的sb.toString()是下面的格式:Content-Disposition:fo
微信素材上传返回提示 "errcode":41005的原因以及以及解决方案
来源:个人的php自学视频 来源:微信素材上传返回提示 "errcode":41005的原因以及以及解决方案 【原因】:由于不同php版本导致curl方法用法有所改变导致的, 【解决方案】:将自己即将要进行微信请求的数据适当处理一下,如下: 例如未处理的数据如下 $data=array( 'media'=>'@'.'自己的文件路径' );上面的格式
微信上传临时素材 。 php7.1.3 总是报41005 最佳解决方案
public function imagetwoAction(){ $path="yaf/application/admin/controllers/uploads_picture_2017-05-03_5909d692c2c84.png";//绝对路径,不可以是外链 //获取token $type="image";
微信公众号上传永久图片素材时 errcode":41005,"errmsg":"media data missing 问题处理
&amp;lt;?php //注意 本人php版本 为5.6 不同php版本curl参数有可能不一致 $access_token=&quot;你的access_token&quot;; $path = '/var/xcx.jpg';//你服务器上图片的绝对路径 $filedata = array ( &quot;media&quot; =&amp;gt;new CURLFile(realpath($path)), ); $url = &quot;h...
微信企业号上传永久素材讲解与演示
因为写书的需要,就顺便把这个章节一起写在博客了,只为帮助有需要的朋友,上传永久素材接口里面分了2个小接口① 上传永久图文素材② 上传其他类型永久素材官方开发文档传送门:http://qydev.weixin.qq.com/wiki/index.php?title=%E4%B8%8A%E4%BC%A0%E6%B0%B8%E4%B9%85%E7%B4%A0%E6%9D%90首先上传永久图文素材需要一个
微信公众号开发---上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing
1、上传临时素材到公众号遇到的问题:"errcode":41005,"errmsg":"media data missing 解决办法:因为php版本的原因,上传素材一直保错。php的curl的curl_setopt 函数存在版本差异 php5.5已经把通过@加文件路径上传文件的方式给放入到Deprecated中了。php5.6默认是不支持这种方式了 特殊处理1:curl_s
微信公众号开发上传零时素材遇到"errcode":41005,"errmsg":"media data missing
解决办法:因为php版本的原因,上传素材一直保错。php的curl的curl_setopt 函数存在版本差异 php5.5已经把通过@加文件路径上传文件的方式给放入到Deprecated中了。php5.6默认是不支持这种方式了 特殊处理1:curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false); 特殊处理2:$post_data ['
PHP 5.6+ 微信上传临时素材的问题 41005
5.6+ 不再支持@+地址 需要使用CURLFile这个方法 5.5 $data = array('media' =&amp;amp;gt; '@' . $filepath); 5.6 $data = array('media' =&amp;amp;gt; new \CURLFile($filepath)); 具体方法如下: /** * 上传临时素材 * @param string $ac...
java开发微信上传永久视频素材接口开发
/** * 模拟form表单的形式 ,上传文件 以输出流的形式把文件写入到url中,然后用输入流来获取url的响应 * @param url 请求地址 form表单url地址 * @param filePath 文件在服务器保存路径 * @param title 视频标题 * @param introduction 视频描述 * @
微信公众开发 41005 media data missing的解决办法
我用的是php5.6 上传图片时报的错 41005 media data missing 解决办法:curl_setopt($curl, CURLOPT_SAFE_UPLOAD, FALSE); @curl_setopt($curl, CURLOPT_POSTFIELDS, $data);// 处理请求数据
微信公众平台 多媒体文件上传接口调试工具
在微信素材管理中,获取微信永久素材和临时素材需要media_id参数,这个参数需要通过上传素材来实现。调试工具地址:微信公众平台接口调试工具步骤一 1:接口类型:基础支持 2:接口列表:多媒体文件上传接口/media/upload 3:添加微信公众平台access_token值 4:选择你上传的多媒体文件类型 5:选择你需要添加的文件(media) 步骤二 检查问题,成功返回参数,错误
php 微信新增永久素材
微信的新增永久素材,最重要的是图文素材,基本流程是如下:   获取access_token; 上传封面素材,获取永久素材的media_id,可以是images或者thumb类型都可以 上传图文中的图片,获取图片的腾讯域名的url 上传永久图文素材 第一步就不说了,curl的就可以解决。   第二步获取永久素材跟上篇获取临时id大同小异,等下会吧代码贴出来 第三步获取图文中的图片ur...
06_微信的素材和图片消息处理
临时素材: 公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。 请注意:   1、对于临时素材,每个素材(media_id)会在开发者上传或粉丝发送到微信服务器3天后自动删除(所以用户发送给开发者的素材,若开发者需要,应尽快下载到本地)...
微信上传永久素材报错41005
[img=https://img-bbs.csdn.net/upload/201507/27/1437974406_358769.png][/img]rnrnstring wxurl = "http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=" + Access_Token;rnrn string filepath = Server.MapPath("image/" + fileName);rn //string filepath = @"C:\Users\cdkj\Desktop\weixin\微信练习\image\6.jpg";rn FileStream fileStream = new FileStream(filepath, FileMode.Open, FileAccess.Read);rn BinaryReader br = new BinaryReader(fileStream);rn byte[] buffer = br.ReadBytes(Convert.ToInt32(fileStream.Length));rnrn string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");rn //请求rn WebRequest req = WebRequest.Create(wxurl + "&type=" + ImgUpload.PostedFile.ContentType);rn req.Method = "POST";rn req.ContentType = "multipart/form-data; boundary=" + boundary;rn //string media = "Content-Disposition: form-data;\"filename\":\"" + fileName + "\",\"filelength\":\"" + ImgUpload.PostedFile.ContentLength.ToString() +rn // "\",\"content-type\":\"image\"";rn 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));rn //StringBuilder sb = new StringBuilder();rn //sb.Append("Content-Disposition: form-data; name=\"media\"; filename=\"" + fileName +rn // "\"; filelength=\"" + ImgUpload.PostedFile.ContentLength.ToString() + "\";");rn //sb.Append("\r\n");rn //sb.Append("Content-Type: " + ImgUpload.PostedFile.ContentType);rn //sb.Append("\r\n\r\n");rn string head = sbHeader.ToString();rn byte[] form_data = Encoding.UTF8.GetBytes(head);rn //结尾rn byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");rnrn //post总长度rn long length = form_data.Length + fileStream.Length + foot_data.Length;rnrn req.ContentLength = length;rnrn Stream requestStream = req.GetRequestStream();rn //这里要注意一下发送顺序,先发送form_data > buffer > foot_datarn //发送表单参数rn requestStream.Write(form_data, 0, form_data.Length);rn //发送文件内容rn requestStream.Write(buffer, 0, buffer.Length);rn //结尾rn requestStream.Write(foot_data, 0, foot_data.Length);rnrn requestStream.Close();rn fileStream.Close();rn fileStream.Dispose();rn br.Close();rn br.Dispose();rn //响应rn WebResponse pos = req.GetResponse();rn StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);rn string html = sr.ReadToEnd().Trim();rn sr.Close();rn sr.Dispose();rn if (pos != null)rn rn pos.Close();rn pos = null;rn rn if (req != null)rn rn req = null;rn rnrn两种方式都不行。始终返回41005,求大神指点。。。
微信公众号开发上传视频素材
C#微信公众平台开发中的上传永久视频代码
tp5上传图片添加永久素材到微信公众号
&amp;#13; $file = request()-&amp;gt;file('image');if(!$file){ $res['status'] = false; $res['msg'] = '必须上传文件'; return $res;}// 移动到框架应用根目录/public/uploads/ 目录下$info = $file-&amp;gt;validate(['s...
上传永久素材详细步骤,自写 亲测可用
首先发个链接下个demo,链接https://github.com/Wechat-Group/weixin-java-tools/wiki/%E5%85%AC%E4%BC%97%E5%8F%B7%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3 进入DEMO代码下载  这样后来开发会省好多代码 点进去下载 点击clone or download 然后POM...
微信企业号上传媒体文件之本地文件上传
微信企业号上传媒体文件之本地文件上传,企业在使用接口时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。通过接口ttps://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件。 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源。 通常文件上传是通过html表单进行的,通过HttpURLConnection 可以
C# 微信素材上传-超简单
已经全部调试通过,修改accesstoken即可使用
php5.6版本以上微信上传临时素材的问题
这两天都在做微信的东西,整了一个测试号后开始慢慢弄,前面回复消息都没有什么问题,虽然文档里面坑不少,单到了上传素材这一块,用之前的CURL返回的是'errcode' =&amp;gt; 41005, 'errmsg' =&amp;gt; 'media data missing hint查过网上的资料以后发现是因为php5.6以上的版本去除了微信当中的那种CURL,不再支持@+地址这种,需要开启CURLOPT_SA...
php 微信永久素材视频上传
a.php 省略了一不部分token!!!! $msg=$GLOBALS['HTTP_RAW_POST_DATA']; $msgstr=(array)simplexml_load_string($msg, 'SimpleXMLElement', LIBXML_NOCDATA);$com=com($msgstr);if($msgstr['MsgType']=='video'){ //回复视频
php 微信公众平台上传多媒体接口 41005错误(由于php版本间部分方法用法不一致引起)
原文链接: http://www.maoyupeng.com/wechat-upload-image-errorcode-41005.html PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求。 传统上,PHP的cURL支持通过在数组数据中,使用“@+文件全路径”的语法附加文件,供cURL读取
PHP微信上传素材
data format error hint 这段时间一直再调微信得各种接口,没想象中那么坑,主要是太久没更新了。 真正坑的是网上那些全都一样得博客,简直害人不浅 今天对接微信素材上传就碰到了一个坑,整整搞了一个晚上,马上就要睡着了,想起看看php手册 果然解决了! 微信得官方文档接口是这样得 http请求方式:POST/FORM,使用https https://api.weix
xheditor关于视频上传的修改
目前有一个陈年项目,需要支持视频上传。但是xheditor只支持ie下播放。专业的说法是视频通过插件上传之后编译到embed标签下。支持application/x-mplayer2。但是新版的谷歌、火狐并不鸟它。谷需要修改! 下载地址(官网):http://xheditor.com/download.html 不过到2015年之后就不更新了。可惜了,虽然觉得这个style蛮清爽的。但是
上传media数据到微信,然后获取media_id
因为微信开发给用户发送图片消息需要先将图片上传到微信服务器,然后得到一个media_id数据,这个数据按照官方的文档是需要提交一个post格式的表单数据,这里使用程序模仿微信的post方式提交数据,在此感谢柳峰老师的文章,让我受益匪浅,这里也是参考了[柳峰](http://blog.csdn.net/lyq8479?viewmode=contents)老师的文章: package com.w
微信企业号上传媒体文件之服务器文件上传
微信企业号上传媒体文件之服务器文件上传,企业在使用接口时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。通过接口https://qyapi.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE,企业可以上传多媒体文件。 注意,每个多媒体文件(media_id)会在上传到微信服务器3天后自动删除,以节省服务器资源。 通常文件上传是通过html表单进行的,通过HttpURLConnection
微信公众号上传多媒体文件时报41005错误
最近在优化公司的im服务,其中微信的im服务这几天出现了一个很诡异的问题。那就是我们主动向微信访客发送文本消息是可以的,但是发送图片消息就会失败。一查日志发现微信返回了41005错误。 然后我去网上一查,很多都是php的解决方案,其实无外乎就是说发送网络请求的包变了之后就不行了。我猜想java可能也有这个问题。这样我就去找了一下代码的提交记录,发下确实最近更新了几个网络请求的jar包。 这是更
微信公众号新增其他类型永久素材方法
微信公众号素材管理中新增其他类型永久素材方法.
微信公众平台开发视频上传
/**     * 视频上传     *      * @param filePath 文件路径     * @param accessToken accessToken     * @return        * @throws IOException     */    public String upVideo(String filePath, String accessToken, St...
node服务器如何上传网络素材到微信服务器
我们先看一下微信上传素材的要求:显然在js代码里我们用不了上面的代码,找了很多curl相关的库也没搞定。 下面是上传文件的最终解决方案:如何上传文件引入三个我们要使用的库var request = require('request');//http请求库 var fs = require('node-fs');//文件操作库 var formstream = require('formstream
Java-微信开发上传永久素材(支持所有文件类型)
/** * 上传永久素材 * @param file * @param type * @param title type为video时需要,其他类型设null * @param introduction type为video时需要,其他类型设null * @return {&quot;media_id&quot;:MEDIA_ID,&quot;url&quot;:URL} */ public static ...
微信开发中的素材管理(新增临时、永久图片,新增永久图文)
1.新增临时素材:公众号经常有需要用到一些临时性的多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。通过本接口,公号可以新增临时素材(即上传临时多媒体文件)。注意点:1、临时素材media_id是可复用的。2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。3、上...
golang微信企业号上传图片
简述 上代码 简述 根据官方文档,上传临时素材需要使用multipart。使用python上传素材时,只需要用到requests包,直接post就好了,二用golang上传时,就要使用到标准库的&quot;mime/multipart&quot;库。 上代码 import ( &quot;time&quot; &quot;mime/multipart&quot; &quot;net/http&quot; &quot;path/fi...
微信新增永久视频素材-java
新增永久视频素材-java
微信素材管理之新增、删除和获取永久素材
获取永久素材、删除永久素材和新增永久素材 需要认证号(认证订阅号/认证服务号),且接口调用次数限制为10次/天,超过就会报{ [errcode] => 45009 [errmsg] => reach max api daily quota limit hint: [UOnSja0283vr31!]}错误。
TP3微信公众号开发新增素材
       上次讲述了一下怎么配置微信公众号,  这次我们来探讨一下用TP3框架来进行微信开发中的新增素材(分为永久素材和临时素材)中可能出现的问题,通过出现的问题我们来加深重要知识点的理解。    首先我们先来讲述一下临时素材的上传思路:  从本地上传图片(如下图代码) public function upload(){ $upload = new \Think\Upload();// 实...
钉钉(微信的也应该差不多)上传多媒体文件返回media,demo
public void upload(MultipartFile file) throws Exception { //转存到本地 file.transferTo(new File("E:\\java\\api\\"+file.getOriginalFilename())); JSONObject jsonObject = uploadMedia("接口地址+token
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 ios开发七牛视频上传 ios开发选择视频上传