MR_CHW 2015-12-22 01:13
浏览 3235

微信永久视频上传报错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条回答

    报告相同问题?

    悬赏问题

    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?