public async Task <APIResult> SendCustomerImage([FromBody] SendCustomerImageArgsModel args) { if (string.IsNullOrEmpty(args.OpenId)) { throw new ArgumentNullException("OpenId"); } var user = GetUsername(); wechatCoreDb.EnsureIsCustomerSessionWorker(args.OpenId, user); string requestStrValue = args.Data.Substring(args.Data.IndexOf(',') + 1); //代表 图片 的base64编码数据 string requestFileExtension = args.Data.Split(new char[] { ';' })[0].Substring(args.Data.IndexOf('/') + 1); //获取后缀名 var buffer = Convert.FromBase64String(requestStrValue); var folderPath = $"{Directory.GetCurrentDirectory()}/App_Data/Weixin/TemporaryMedia"; if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } var fileName = $"{folderPath}/{DateTime.Now.ToString("yyyyMMddHHhhss")}{CommonUtil.CreateNoncestr(6)}.{requestFileExtension}"; using (FileStream fs = new FileStream(fileName, FileMode.Create)) { fs.Write(buffer, 0, buffer.Length); ////通过代码审查说,使用了using,不需要再次调用close //fs.Close(); } //fileName = @"C:\Xiang\Temp\1.jpg"; var accessToken = GetAccessToken(); //var uploadResult = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, fileName); var uploadResult = await WechatMediaApiProxy.UploadAsync <Senparc.Weixin.MP.AdvancedAPIs.Media.UploadTemporaryMediaResult>(accessToken, "image", fileName); var data = new { msgType = "image", mediaId = uploadResult.media_id }; System.IO.File.Move(fileName, CustomerMessage.GetCachePathForTemporaryMedia(data.mediaId)); var msg = new CustomerMessage() { FromUser = GetUsername(), ToUser = args.OpenId, Time = DateTime.Now, Content = Newtonsoft.Json.JsonConvert.SerializeObject(data), ChatFlag = args.OpenId }; wechatCoreDb.AddToCustomerMessage(msg); wechatCoreDb.UpdateCustomerSessionTime(args.OpenId); wechatCoreDb.SaveChanges(); return(Success()); }
public async Task <APIResult <UploadForeverMediaModel> > UploadForeverMedia([FromBody] UploadForeverMediaArgsModel args) { args.MediaFileType = args.MediaFileType ?? UploadMediaFileType.image; var fileName = SaveBase64ToFile(args.Data, "App_Data/Weixin/UploadForeverMedia"); var accessToken = GetAccessToken(); var uploadResult = await WechatMediaApiProxy.UploadForeverAsync <Senparc.Weixin.MP.AdvancedAPIs.Media.UploadTemporaryMediaResult>(accessToken, args.MediaFileType.ToString(), fileName); //var result = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadForeverMedia(accessToken, fileName); return(Success <UploadForeverMediaModel>(new UploadForeverMediaModel { MediaId = uploadResult.media_id })); }