示例#1
0
        /// <summary>
        /// 新增临时素材,注意3天后media_id失效
        /// </summary>
        /// <param name="filePathName">指定包含完整路径的文件名</param>
        /// <returns>微信服务返回的创建结果</returns>
        public WeChatResult <TempMaterialResult> AddTempMaterial(string filePathName)
        {
            string url         = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}";
            string accessToken = connect.GetAccessToken();
            string type        = MimeMapping.GetMimeMapping(filePathName); //获取文件的Mime-Type

            type = type.Substring(0, type.IndexOf('/'));                   //提取Mime-Type的前部分
            string fileName = Path.GetFileName(filePathName);

            using (Stream fileStream = new FileStream(filePathName, FileMode.Open))
            {
                if ("image".Equals(type) && fileStream.Length < 64 * 1024)
                {
                    type = "thumb";//如果文件属于图片,而且小于64KB的,类型改成缩略图(thumb)
                }
                else if ("audio".Equals(type))
                {
                    type = "voice";
                }
                url = string.Format(url, accessToken, type);
                string resultStr = SimulateRequest.UploadFile(new UploadFileParam(url, fileName, fileStream));
                WeChatResult <TempMaterialResult> weChatResult = new WeChatResult <TempMaterialResult>(resultStr);
                if (weChatResult.errcode != WeChatErrorCode.SUCCESS)
                {
                    SystemLogHelper.Warn(MethodBase.GetCurrentMethod(), $"新增临时素材AddTempMaterial,微信服务报错:{weChatResult}");
                }
                return(weChatResult);
            }
        }
示例#2
0
        /// <summary>
        /// 新增其他类型永久素材
        /// </summary>
        /// <param name="filePathName">指定包含完整路径的文件名</param>
        /// <param name="videoDescription">上传视频素材时,需提供视频的描述信息</param>
        /// <returns>新增永久素材的结果</returns>
        public WeChatResult <MaterialResult> AddMaterial(string filePathName, VideoDescription videoDescription = null)
        {
            string accessToken = connect.GetAccessToken();
            string type        = MimeMapping.GetMimeMapping(filePathName); //获取文件的Mime-Type

            type = type.Substring(0, type.IndexOf('/'));                   //提取Mime-Type的前部分
            string fileName = Path.GetFileName(filePathName);

            using (Stream fileStream = new FileStream(filePathName, FileMode.Open))
            {
                if ("image".Equals(type) && fileStream.Length < 64 * 1024)
                {
                    type = "thumb";//如果文件属于图片,而且小于64KB的,类型改成缩略图(thumb)
                }
                else if ("audio".Equals(type))
                {
                    type = "voice";
                }
                string          url       = $"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={accessToken}&type={type}";
                UploadFileParam fileParam = new UploadFileParam(url, fileName, fileStream);
                if (videoDescription != null)
                {
                    fileParam.PostParameters.Add("title", videoDescription.title);
                    fileParam.PostParameters.Add("introduction", videoDescription.introduction);
                }
                string resultStr = SimulateRequest.UploadFile(fileParam);
                WeChatResult <MaterialResult> weChatResult = new WeChatResult <MaterialResult>(resultStr);
                if (weChatResult.errcode != WeChatErrorCode.SUCCESS)
                {
                    SystemLogHelper.Warn(MethodBase.GetCurrentMethod(), $"上传图文消息内的图片获取URLGetUrlByUpdateImg,微信服务报错:{weChatResult}");
                }
                return(weChatResult);
            }
        }
        /// <summary>
        /// 上传多媒体文件,返回上传成功的media_id,否则null
        /// </summary>
        /// <param name="filePathName">包括完整路径的文件名</param>
        /// <param name="fileData">文件数据</param>
        /// <param name="fileType">文件类型:图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)</param>
        /// <returns>上传成功的media_id,否则null</returns>
        public MediaFile UploadMediaFile(string filePathName, string fileType)
        {
            //上传的多媒体文件有格式和大小限制,如下:
            //图片(image): 1M,支持JPG格式
            //语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
            //视频(video):10MB,支持MP4格式
            //缩略图(thumb):64KB,支持JPG格式
            //媒体文件在后台保存时间为3天,即3天后media_id失效
            string          url         = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}";
            Stream          fileStream  = new FileStream(filePathName, FileMode.Open, FileAccess.Read);
            UploadParameter uploadParam = new UploadParameter()
            {
                FileNameValue = Path.GetFileName(filePathName),
                UploadStream  = fileStream
            };

            url             = string.Format(url, Connect.GetAccessToken(), fileType);
            uploadParam.Url = url;
            string resultStr = SimulateRequest.UploadFile(uploadParam);
            var    resultObj = JsonConvert.DeserializeObject <JObject>(resultStr);

            if (resultObj["errcode"] != null && resultObj["errcode"].ToString() != "0")
            {
                _logObj.Error("上传多媒体文件UploadMediaFile(),微信服务报错");
                var errorCode = new WeixinErrorInfo(resultObj["errcode"].ToString());
                _logObj.Warn(string.Format("{0}【errmsg:{1}】", errorCode.ToString(), resultObj["errmsg"].ToString()));
                return(null);
            }
            else
            {
                _logObj.InfoFormat("上传多媒体文件UploadMediaFile(),微信处理成功");
                MediaFile mediaFile = JsonConvert.DeserializeObject <MediaFile>(resultStr);
                return(mediaFile);
            }
        }
示例#4
0
        /// <summary>
        /// 上传图文消息内的图片获取URL
        /// </summary>
        /// <param name="filePathName">包含完整访问路径的图片文件名</param>
        /// <returns>包含图片URL的微信响应结果</returns>
        public WeChatResult <WeChatURL> GetUrlByUpdateImg(string filePathName)
        {
            string accessToken = connect.GetAccessToken();
            string url         = $"https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token={accessToken}";
            string fileName    = Path.GetFileName(filePathName);

            using (Stream fileStream = new FileStream(filePathName, FileMode.Open))
            {
                string resultStr = SimulateRequest.UploadFile(new UploadFileParam(url, fileName, fileStream));
                WeChatResult <WeChatURL> weChatResult = new WeChatResult <WeChatURL>(resultStr);
                if (weChatResult.errcode != WeChatErrorCode.SUCCESS)
                {
                    SystemLogHelper.Warn(MethodBase.GetCurrentMethod(), $"上传图文消息内的图片获取URLGetUrlByUpdateImg,微信服务报错:{weChatResult}");
                }
                return(weChatResult);
            }
        }
        /// <summary>
        /// 设置客服帐号的头像,头像图片文件必须是jpg格式,推荐使用640*640大小的图片以达到最佳效果
        /// </summary>
        /// <param name="account">账号,如:[email protected]</param>
        /// <param name="filePathName">包含完整访问路径的文件名,文件必须是jpg格式,推荐使用640*640大小的图片</param>
        /// <returns>设置头像的微信结果</returns>
        public WeChatResult UpdateHeadImg(string account, string filePathName)
        {
            string accessToken = connect.GetAccessToken();
            string url         = $"http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token={accessToken}&kf_account={account}";
            string fileName    = Path.GetFileName(filePathName);

            using (Stream fileStream = new FileStream(filePathName, FileMode.Open))
            {
                string       resultStr    = SimulateRequest.UploadFile(new UploadFileParam(url, fileName, fileStream));
                WeChatResult weChatResult = new WeChatResult(resultStr);
                if (weChatResult.errcode != WeChatErrorCode.SUCCESS)
                {
                    SystemLogHelper.Warn(GetType().FullName, $"设置客服帐号的头像UpdateHeadImg,微信服务报错:{weChatResult}");
                }
                return(weChatResult);
            }
        }