Ejemplo n.º 1
0
        /// <summary>
        /// 新增永久素材(多媒体文件)
        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="type">媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)</param>
        /// <param name="fileName">文件名(不包含路径)</param>
        /// <param name="data">数据</param>
        /// <param name="errorMessage">返回新增是否成功</param>
        /// <param name="title">视频素材的标题(对于其他媒体类型,忽略该参数)</param>
        /// <param name="introduction">视频素材的描述(对于其他媒体类型,忽略该参数)</param>
        /// <returns>返回多媒体的id;如果上传失败,返回null。</returns>
        public static string Add(string userName, MultiMediaTypeEnum type, string fileName, byte[] data,
                                 out ErrorMessage errorMessage, string title = null, string introduction = null)
        {
            if (type == MultiMediaTypeEnum.news)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "不能使用该方法新增永久图文消息,请使用新增图文消息的重载方法。");
                return(null);
            }
            if (type == MultiMediaTypeEnum.video && (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(introduction)))
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "新增永久视频素材时,必须提供标题和描述。");
                return(null);
            }
            AccessToken token = AccessToken.Get(userName);

            if (token == null)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "获取许可令牌失败。");
                return(null);
            }
            string url = string.Format(urlForAddingMeterial, token.access_token, type.ToString("g"));
            NameValueCollection formData = null;

            if (type == MultiMediaTypeEnum.video)
            {
                formData.Add("description", JsonConvert.SerializeObject(new { title = title, introduction = introduction }));
            }
            string responseContent = HttpHelper.Upload(url, fileName, data, formData);

            return(GetMediaId(responseContent, out errorMessage));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 从JSON字符串解析多媒体上传结果
        /// </summary>
        /// <param name="json">JSON字符串</param>
        /// <returns>返回多媒体上传结果</returns>
        public static MultiMediaUploadResult Parse(string json)
        {
            var result = JsonConvert.DeserializeAnonymousType(json, new { type = "TYPE", media_id = "MEDIA_ID", created_at = 123456789 });
            MultiMediaTypeEnum type      = (MultiMediaTypeEnum)Enum.Parse(typeof(MultiMediaTypeEnum), result.type, true);
            string             mediaId   = result.media_id;
            DateTime           createdAt = Utility.ToDateTime(result.created_at);

            return(new MultiMediaUploadResult(type, mediaId, createdAt));
        }
Ejemplo n.º 3
0
    /// <summary>
    /// 新增素材
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        string             userName = lbPublicAccount.SelectedValue;
        MultiMediaTypeEnum type     = (MultiMediaTypeEnum)Enum.Parse(typeof(MultiMediaTypeEnum), lbMultiMediaType.SelectedValue);
        ErrorMessage       errorMessage;
        string             mediaId = Meterial.Add(userName, type, fileUpload.FileName, fileUpload.FileBytes, out errorMessage);

        if (errorMessage.IsSuccess)
        {
            ltrMessage.Text = string.Format("新增永久{0:g}素材成功。素材媒体id:{1}", type, mediaId);
        }
        else
        {
            ltrMessage.Text = string.Format("新增永久{0:g}素材失败。{1}", type, errorMessage);
        }
    }
Ejemplo n.º 4
0
        /// <summary>
        /// 批量获取素材列表
        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="type">素材类型</param>
        /// <param name="offset">从全部素材的该偏移位置开始返回,0表示从第一个素材返回</param>
        /// <param name="count">返回素材的数量,取值在1到20之间</param>
        /// <param name="errorMessage">返回是否获取成功</param>
        /// <returns>返回素材列表;如果获取失败,返回null。</returns>
        public static BatchMeterial BatchGet(string userName, MultiMediaTypeEnum type, int offset, int count, out ErrorMessage errorMessage)
        {
            if (offset < 0)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "偏移位置不能小于0。");
                return(null);
            }
            if (count < 1 || count > 20)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "素材数量必须介于1至20之间。");
                return(null);
            }
            string json = JsonConvert.SerializeObject(new { type = type.ToString("g"), offset = offset, count = count });

            return(HttpHelper.RequestParsableResult <BatchMeterial>(urlForBatchGettingMeterial, userName, out errorMessage, null, httpMethodForBatchGettingMeterial, json));
        }
        /// <summary>
        /// 上传多媒体文件
        /// </summary>
        /// <param name="userName">公众号</param>
        /// <param name="type">多媒体类型</param>
        /// <param name="pathName">包含路径的文件名</param>
        /// <param name="errorMessage">返回上传是否成功</param>
        /// <returns>返回多媒体上传结果;如果上传失败,返回null。</returns>
        public static MultiMediaUploadResult Upload(string userName, MultiMediaTypeEnum type, string pathName, out ErrorMessage errorMessage)
        {
            if (type == MultiMediaTypeEnum.news)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "不能使用该方法上传图文消息,请使用上传图文消息的重载方法。");
                return(null);
            }
            AccessToken token = AccessToken.Get(userName);

            if (token == null)
            {
                errorMessage = new ErrorMessage(ErrorMessage.ExceptionCode, "获取许可令牌失败。");
                return(null);
            }
            string url             = string.Format(urlForUploadingMedia, token.access_token, type.ToString("g"));
            string responseContent = HttpHelper.Upload(url, pathName);

            return(ParseResult(responseContent, out errorMessage));
        }
Ejemplo n.º 6
0
    /// <summary>
    /// 上传多媒体文件
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        string             userName = lbPublicAccount.SelectedValue;
        MultiMediaTypeEnum type     = (MultiMediaTypeEnum)Enum.Parse(typeof(MultiMediaTypeEnum), lbMultiMediaType.SelectedValue);
        string             filename = fileUpload.FileName;

        byte[]                 bytes = fileUpload.FileBytes;
        ErrorMessage           errorMessage;
        MultiMediaUploadResult result = MultiMediaHelper.Upload(userName, type, filename, bytes, out errorMessage);

        if (errorMessage.IsSuccess && result != null)
        {
            hlShowMultiMedia.NavigateUrl = MultiMediaHelper.GetDownloadUrl(AccessToken.Get(userName).access_token, result.MediaId);
            ltrMessage.Text = "上传多媒体文件成功。";
        }
        else
        {
            hlShowMultiMedia.NavigateUrl = string.Format("javascript:alert('上传多媒体文件失败。\r\n{0}');", errorMessage);
            ltrMessage.Text = string.Format("上传多媒体文件失败。\r\n{0}", errorMessage);
        }
    }
Ejemplo n.º 7
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="type">多媒体类型</param>
 /// <param name="mediaId">媒体ID</param>
 /// <param name="createAt">创建时间</param>
 public MultiMediaUploadResult(MultiMediaTypeEnum type, string mediaId, DateTime createAt)
 {
     Type      = type;
     MediaId   = mediaId;
     CreatedAt = createAt;
 }
Ejemplo n.º 8
0
 /// <summary>
 /// 新增临时素材(多媒体文件)
 /// </summary>
 /// <param name="userName">公众号</param>
 /// <param name="type">媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)</param>
 /// <param name="fileName">文件名(不包含路径)</param>
 /// <param name="data">数据</param>
 /// <param name="errorMessage">返回上传是否成功</param>
 /// <returns>返回上传多媒体文件的结果;如果上传失败,返回null。</returns>
 public static MultiMediaUploadResult AddTemporary(string userName, MultiMediaTypeEnum type, string fileName, byte[] data, out ErrorMessage errorMessage)
 {
     return(MultiMediaHelper.Upload(userName, type, fileName, data, out errorMessage));
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 新增临时素材(多媒体文件)
 /// </summary>
 /// <param name="userName">公众号</param>
 /// <param name="type">媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)</param>
 /// <param name="pathName">包含路径的文件名</param>
 /// <param name="errorMessage">返回上传是否成功</param>
 /// <returns>返回多媒体上传结果;如果上传失败,返回null。</returns>
 public static MultiMediaUploadResult AddTemporary(string userName, MultiMediaTypeEnum type, string pathName, out ErrorMessage errorMessage, out string responseContent)
 {
     return(MultiMediaHelper.Upload(userName, type, pathName, out errorMessage, out responseContent));
 }