/// <summary> /// 处理图片请求 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnImageRequest(RequestMessageImage requestMessage) { var content = new { msgType = "image", mediaId = requestMessage.MediaId }; var data = new RequestMsgData(); data.MsgId = requestMessage.MsgId; data.Content = Newtonsoft.Json.JsonConvert.SerializeObject(content); data.CreateTime = requestMessage.CreateTime; data.FromUserName = requestMessage.FromUserName; data.ToUserName = requestMessage.ToUserName; data.MsgType = requestMessage.MsgType; db.AddToRequestMsgData(data); db.SaveChanges(); var accessToken = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(appId, appSecret); var fileName = CustomerMessage.GetCachePathForTemporaryMedia(requestMessage.MediaId); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { MediaApi.Get(accessToken, requestMessage.MediaId, fs); } return(null); }
public void GetStreamTest() { var accessToken = AccessTokenContainer.GetAccessToken(_appId); UploadTemporaryMediaTest();//上传 using (MemoryStream ms = new MemoryStream()) { MediaApi.Get(accessToken, mediaId, ms); Assert.IsTrue(ms.Length > 0); //保存到文件 #if NETSTANDARD2_0 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2 var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\testpic_{0}.core20.jpg".FormatWith(SystemTime.Now.ToString("yyyyMMddHHmmss"))); #else var fileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\testpic_{0}.net45.jpg".FormatWith(SystemTime.Now.ToString("yyyyMMddHHmmss"))); #endif using (FileStream fs = new FileStream(fileName, FileMode.Create)) { ms.Position = 0; byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Flush(); } Assert.IsTrue(File.Exists(fileName)); } }
public void GetImageTest() { string mediaId = UploadImageTest(); var accessToken = AccessTokenContainer.GetToken(_corpId); using (MemoryStream ms = new MemoryStream()) { MediaApi.Get(accessToken, mediaId, ms); Assert.IsTrue(ms.Length > 0); //保存到文件 var fileName = string.Format(@"E:\testpic_{0}.jpg", DateTime.Now.Ticks); using (FileStream fs = new FileStream(fileName, FileMode.Create)) { ms.Position = 0; byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Flush(); } Assert.IsTrue(File.Exists(fileName)); } }
private static void SaveImage(object taskO) { var taskObject = taskO as TaskObject; var thisObject = taskObject.thisObject as QyCustomMessageHandler; var requestMessage = taskObject.parameter1 as RequestMessageImage; LogManager.GetLogger(thisObject.GetType()).Debug("Begin SaveImage from Wechat Client"); //WebClient webclient = new WebClient(); //var picData = await webclient.DownloadDataTaskAsync(requestMessage.PicUrl); //string picType = requestMessage.PicUrl.Substring(requestMessage.PicUrl.LastIndexOf('.') + 1); //var img = ImageHelper.BytesToImage(picData); using (MemoryStream stream = new MemoryStream()) { string filename = ""; try { LogManager.GetLogger(thisObject.GetType()).Debug("MediaApi.Get"); MediaApi.Get(GetToken(requestMessage.AgentID), requestMessage.MediaId, stream); stream.Seek(0, SeekOrigin.Begin); //var imageBytes = stream.ToArray(); //var imageFromUser = ImageHelper.BytesToImage(imageBytes); //LogManager.GetLogger(this.GetType()).Debug("ImageUtility.MakeThumbnail"); filename = USER_IMAGE_SAVE_FOLDER_PATH + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".jpg"; string strPath = thisObject.MapPath("/" + filename); //ImageUtility.MakeThumbnail(null, stream, strPath, 900, 0, "W", 0, true);//update by anrew. 6/12 //thumbnailImageFromUser.Save(strPath); var image = System.Drawing.Image.FromStream(stream); image.Save(strPath); //LogManager.GetLogger(this.GetType()).Debug("thumbnailImageFromUser is NULL? - " + (thumbnailImageFromUser == null)); LogManager.GetLogger(thisObject.GetType()).Debug("new ArticleImages()"); LogManager.GetLogger(thisObject.GetType()).Debug("AppId: {0} CreatedUserID: {1}", requestMessage.AgentID, requestMessage.FromUserName); var articleImage = new ArticleImages() { AppId = requestMessage.AgentID, UploadedUserId = requestMessage.FromUserName, ImageContent = System.IO.File.ReadAllBytes(strPath), CreatedDate = DateTime.Now, ImageName = filename }; LogManager.GetLogger(thisObject.GetType()).Debug("_articleImagesService.Insert"); thisObject._articleImagesService.Repository.Insert(articleImage); } catch (Exception ex) { LogManager.GetLogger(thisObject.GetType()).Error(ex.Message + "\r\n Filename:" + filename + "\r\n" + ex.InnerException + "\r\n" + ex.StackTrace); } } LogManager.GetLogger(thisObject.GetType()).Debug("End SaveImage from Wechat Client"); }
public ActionResult ShowImage(string mediaId) { var smallFileName = CustomerMessage.GetCacheSmallPathForTemporaryMedia(mediaId); var targetFileName = smallFileName; if (!System.IO.File.Exists(smallFileName)) { //如果没有小图,说明没进行缩小处理过 var fileName = CustomerMessage.GetCachePathForTemporaryMedia(mediaId); if (!System.IO.File.Exists(fileName)) //如果没有原图,则需要下载下来 { var accessToken = GetAccessToken(); using (FileStream createFs = new FileStream(fileName, FileMode.Create)) { MediaApi.Get(accessToken, mediaId, createFs); } } try { ResizeImage(fileName, smallFileName); } catch (Exception ex) { _logger.LogError(ex, "缩放出错,文件名:{0}", fileName); targetFileName = fileName; //显示的时候用原图显示。 } } FileStream fs = new FileStream(targetFileName, FileMode.Open); return(File(fs, "image/jpeg")); }
/// <summary> /// 获取微信的图片; /// </summary> /// <param name="mediaId"></param> /// <returns></returns> public MemoryStream GetMediaStream(string mediaId) { MemoryStream stream = new MemoryStream(); MediaApi.Get(AccessToken, mediaId, stream); return(stream); }
public IActionResult Post() { var mediaId = Request.Form["mediaId"]; var picType = Request.Form["picType"]; string upLoadPath = Path.Combine(hostingEnv.WebRootPath, "wximg/"); var path = MediaApi.Get(Config.SenparcWeixinSetting.WeixinAppId, mediaId, upLoadPath); path = "/wximg/" + Path.GetFileName(path); return(Json(ReturnHelper.SuccessMsgDataDCountHttpCode("success", path))); }
public string GetMediaFile(string mediaId, string strType = ".jpg") { string path = AppContext.BaseDirectory; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string mdfile = path + Guid.NewGuid().ToString() + strType; FileStream fs = new FileStream(mdfile, FileMode.Create); MediaApi.Get(GetToken(), mediaId, fs); fs.Close(); return(mdfile); }
public JsonResult SaveImageToServer(string[] mediaIds) { var dir = Server.MapPath("~/Upload/Weixin"); var urls = new List <string>(); foreach (var mediaId in mediaIds) { var fullFileName = MediaApi.Get(appId, mediaId, dir); var fileName = Path.GetFileName(fullFileName); var url = string.Format("{0}://{1}{2}{3}", Request.Url.Scheme, Request.Url.Authority, Url.Content("~/Upload/"), fileName); urls.Add(url); } var data = new { urls = urls }; return(Json(data)); }
/// <summary> /// 从微信照片服务器取得图片并保存到本地 /// </summary> /// <param name="id">远程图片id</param> /// <param name="filePath">文件路径</param> /// <param name="fileName">文件名</param> /// <param name="corpId">企业微信CorpId</param> /// <param name="secret">企业微信Secret</param> /// <returns></returns> public static bool SaveFileByWeixin(string id, string filePath, string fileName, string corpId, string secret) { try { using (var fileStream = new FileStream(filePath + fileName, FileMode.Create)) { string AccessToken = AccessTokenContainer.TryGetToken(corpId, secret); MediaApi.Get(AccessToken, id, fileStream); } return(true); } catch { return(false); } }
public IHttpActionResult UploadPhotos(Guid typeId) { var ids = HttpContext.Current.Request.Form["mediaIds"].Trim(',').Split(','); foreach (var mediaId in ids) { var fileName = DateTime.Now.ToString("yyyy-MM-dd"); //文件保存的名字 var fileSaveName = Guid.NewGuid().ToString("N") + ".png"; //租户Id var dirName = TenantId.ToString(); var path = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } path = Path.Combine(path, fileSaveName); //从临时素材获取 using (var stream = File.Create(path)) { //TODO:切换SDK MediaApi.Get(WeChatConfigManager.Current.GetAccessToken(), mediaId, stream); } //上传到永久素材 var result = MediaApi.UploadForeverMedia(AccessToken, path); if (!string.IsNullOrWhiteSpace(result.errmsg)) { return(BadRequest(result.errmsg)); } //写入数据 var pic = new Site_Image { IsFrontCover = !db.Site_Images.Any(p => p.ResourcesTypeId == typeId), MediaId = result.media_id, Name = fileName, //站内地址 SiteUrl = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName), Url = result.url, ResourcesTypeId = typeId }; SetModel(pic, default(Guid)); db.Site_Images.Add(pic); db.SaveChanges(); } return(Ok()); }
public ActionResult UploadFile(string serverId, string filename) { string accessTokenOrAppId = AccessTokenContainer.TryGetAccessToken(AppId, AppSecret, false); string path = string.Concat(new object[] { "/upload/", DateTime.Now.Year, "/", DateTime.Now.Month.ToString("D2"), "/", DateTime.Now.Day.ToString("D2"), "/" }); if (!Directory.Exists(base.Server.MapPath(path))) { Directory.CreateDirectory(base.Server.MapPath(path)); } Guid guid = Guid.NewGuid(); string str3 = path + guid + ".jpg"; FileStream stream = new FileStream(base.Server.MapPath(str3), FileMode.Create); MediaApi.Get(accessTokenOrAppId, serverId, stream); stream.Close(); return(base.Content(JsonConvert.SerializeObject(new { path = str3 }))); }
public void DownImageFromWeixinServer(string serverId, string savepath) { try { var appid = _settingManager.GetSettingValue(AppSettings.Weixin.AppId); var appsecret = _settingManager.GetSettingValue(AppSettings.Weixin.AppSecret); string accessToken = AccessTokenContainer.TryGetAccessToken(appid, appsecret, true); var stream = new MemoryStream(); MediaApi.Get(accessToken, serverId, stream); Image image = Image.FromStream(stream); image.Save(savepath); } catch (Exception ex) { throw new UserFriendlyException("从微信服务器下载图片失败!"); } }
public void GetDirTest() { var accessToken = AccessTokenContainer.GetAccessToken(_appId); UploadTemporaryMediaTest();//上传 #if NETSTANDARD2_0 || NETCOREAPP2_0 || NETCOREAPP2_1 || NETCOREAPP2_2 var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\..\\"); #else var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\"); #endif var fileName = MediaApi.Get(accessToken, mediaId, dir); Assert.IsTrue(File.Exists(fileName)); Console.WriteLine("原始文件:" + fileName); }
private string GetFile(string serverid, string path) { try { string name = Guid.NewGuid().ToString("n").Substring(0, 8) + ".jpg"; using (MemoryStream ms = new MemoryStream()) { MediaApi.Get(MPBasicSetting.AppID, serverid, ms); SaveFile(path, name, ms.ToArray()); } return(name); } catch (Exception e) { LogHelper.Log(e.Message); } return(string.Empty); }
public void GetVoiceTest() { string serverId = "IT41QWoGSnkt5fj01mK2ByhgRACBgvRW6fGP3bt9QAjH8vwqsra9qYJkj8LCXzNS"; var file = SystemTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ".speex"; //ServerUtility.ContentRootMapPath("~/../") using (MemoryStream ms = new MemoryStream()) { MediaApi.Get(base._appId, serverId, ms); //保存到文件 ms.Position = 0; byte[] buffer = new byte[1024]; int bytesRead = 0; //判断是否上传成功 byte[] topBuffer = new byte[1]; ms.Read(topBuffer, 0, 1); if (topBuffer[0] == '{') { //写入日志 ms.Position = 0; byte[] logBuffer = new byte[1024]; ms.Read(logBuffer, 0, logBuffer.Length); string str = System.Text.Encoding.Default.GetString(logBuffer); Console.WriteLine(str); Assert.Fail(); } else { ms.Position = 0; //创建目录 using (FileStream fs = new FileStream(file, FileMode.Create)) { while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Flush(); } } } }
/// <summary> /// 处理语音请求 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage) { var responseMessage = CreateResponseMessage <ResponseMessageText>(); var path = MediaApi.Get(appId, requestMessage.MediaId, $"{Server.AppDomainAppPath}App_Data/Audio/"); var outPutPath = $"{path.Substring(0, path.Length - 4)}.mp3"; var success = FFmpegUtil.Arm2Mp3Async(path, outPutPath).ConfigureAwait(false).GetAwaiter().GetResult(); if (success) { var intelligentVoiceServer = new IntelligentVoiceServer(); var text = intelligentVoiceServer.Voice2Text(outPutPath).ConfigureAwait(false).GetAwaiter().GetResult(); responseMessage.Content = text; File.Delete(path); File.Delete(outPutPath); } else { File.Delete(path); responseMessage.Content = "转换失败"; } return(responseMessage); }
public ActionResult Edit(DbQRInfo info) { DbQRInfo poco = TF.QR.Config.Helper.SingleById <DbQRInfo>(info.Id); if (poco.OpenID != base.Request.Cookies["openid"].Value) { return(base.Error("没有操作权限")); } string str = base.Request.Form["mediaid"]; if (!string.IsNullOrEmpty(str)) { string accessTokenOrAppId = AccessTokenContainer.TryGetAccessToken(TF.QR.Config.AppId, TF.QR.Config.AppSecret, false); string path = string.Concat(new object[] { "/upload/", DateTime.Now.Year, "/", DateTime.Now.Month.ToString("D2"), "/", DateTime.Now.Day.ToString("D2"), "/" }); if (!Directory.Exists(base.Server.MapPath(path))) { Directory.CreateDirectory(base.Server.MapPath(path)); } Guid guid = Guid.NewGuid(); string str4 = path + guid + ".jpg"; FileStream stream = new FileStream(base.Server.MapPath(str4), FileMode.Create); MediaApi.Get(accessTokenOrAppId, str, stream); stream.Close(); poco.Photo = str4; } poco.RealName = info.RealName; poco.Sex = info.Sex; poco.BirthDay = info.BirthDay; poco.Address = info.Address; poco.ContactName = info.ContactName; poco.ContactMobile = info.ContactMobile; poco.ContactName2 = info.ContactName2; poco.ContactMobile2 = info.ContactMobile2; poco.Tip = info.Tip; TF.QR.Config.Helper.Save(poco); return(base.Success("提交成功")); }
/// <summary> /// 下载微信临时素材Image /// </summary> /// <param name="serverId"></param> /// <param name="fileName"></param> /// <param name="getNewToken"></param> /// <returns></returns> public bool DownloadTemplate(string serverId, string fileName, bool getNewToken = false) { using (MemoryStream ms = new MemoryStream()) { var senparcWeixinSetting = SenparcDI.GetService <IOptions <SenparcWeixinSetting> >().Value; MediaApi.Get(senparcWeixinSetting.WeixinAppId, serverId, ms); //保存到文件 ms.Position = 0; byte[] buffer = new byte[1024]; int bytesRead = 0; //判断是否上传成功 byte[] topBuffer = new byte[1]; ms.Read(topBuffer, 0, 1); if (topBuffer[0] == '{') { //写入日志 ms.Position = 0; byte[] logBuffer = new byte[1024]; ms.Read(logBuffer, 0, logBuffer.Length); string str = System.Text.Encoding.Default.GetString(logBuffer); Senparc.Ncf.Log.LogUtility.Weixin.InfoFormat("下载失败:{0}。serverId:{1}", str, serverId); return(false); } ms.Position = 0; //创建目录 using (FileStream fs = new FileStream(fileName, FileMode.Create)) { while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Flush(); } Senparc.Ncf.Log.LogUtility.Weixin.InfoFormat("下载成功:Path[{0}]", fileName); } return(true); }
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void GetAttach(string mediaId, Stream stream) #pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 { MediaApi.Get(TryGetAccessToken(), mediaId, stream); }
public static void Get(Stream stream, string mediaId) { MediaApi.Get(GetToken(), mediaId, stream); }
/// <summary> /// 获取文件流 /// </summary> /// <param name="accessToken"></param> /// <param name="mediaId"></param> /// <returns></returns> public static void Get(string accessToken, string mediaId, Stream ms) { MediaApi.Get(accessToken, mediaId, ms); }
/// <summary> /// 新增语音数据 /// </summary> /// <param name="context"></param> protected void SaveCurInfo() { var mediald = _ct.Request.Params["serverId"]; var wxopid = _ct.Request.Params["tmpid"]; using (MemoryStream ms = new MemoryStream()) { MediaApi.Get(AccessTokenContainer.TryGetToken(WebConfigurationManager.AppSettings["wxappid"], WebConfigurationManager.AppSettings["wxsecret"]), mediald, ms); //保存到文件 var ditick = DateTime.Now.Ticks; var targetname = string.Format("mp3_{0}.mp3", ditick); var fileName = string.Format(WebConfigurationManager.AppSettings["mp3url"] + "mp3_{0}.amr", ditick); var targetpaht = string.Format(WebConfigurationManager.AppSettings["mp3url"] + "mp3_{0}.mp3", ditick); try { using (FileStream fs = new FileStream(fileName, FileMode.Create)) { ms.Position = 0; byte[] buffer = new byte[1024]; int bytesRead = 0; while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0) { fs.Write(buffer, 0, bytesRead); } fs.Flush(); } ExcuteProcess(WebConfigurationManager.AppSettings["ffexepath"], fileName, targetpaht, (s, e) => Console.WriteLine(e.Data)); if (File.Exists(fileName)) { File.Delete(fileName); } using (WXDBEntities db = new WXDBEntities()) { var tmodel = db.lotterUserInfo.Where(s => s.Type.Equals(14) && s.OpenId.Equals(wxopid)).FirstOrDefault(); if (tmodel != null) { tmodel.lotDesc = targetname; db.SaveChanges(); string jsonstrlist = JsonHelper.GetJsonString(new jsonResult { code = "succ", result = tmodel.Id + "", count = 1 }); _ct.Response.Write(jsonstrlist); } else { string jsonstrlist = JsonHelper.GetJsonString(new jsonResult { code = "faile", result = "暂无数据", count = 2 }); _ct.Response.Write(jsonstrlist); } } } catch (Exception e) { string jsonstrlist = JsonHelper.GetJsonString(new jsonResult { code = "faile", result = e.Message, count = 0 }); _ct.Response.Write(jsonstrlist); } } }
public static Dictionary <string, string> WXUploadFile(string ServerID, UploadImageInfo model) { //string gps= map_tx2bd(double.Parse(model.GPSLatitude), double.Parse(model.GPSLongitude)); string filePath = System.Configuration.ConfigurationManager.AppSettings[BaseDictType.TempFileUploadPath]; var filename = Util.RPCNow.Ticks.ToString() + Util.RPCNow.Millisecond + ".jpg"; var saveURl = System.Web.HttpContext.Current.Server.MapPath(filePath) + filename; var accessToken = WeixinCache.GetCorpAccessToken(); using (MemoryStream stream = new MemoryStream()) { MediaApi.Get(accessToken, ServerID, stream); if (!System.IO.Directory.Exists(saveURl)) { System.IO.Directory.CreateDirectory(saveURl.Replace(filename, "")); } using (var fs = new FileStream(saveURl, FileMode.CreateNew)) { stream.Seek(0, SeekOrigin.Begin); stream.CopyTo(fs); fs.Flush(); } } Dictionary <string, string> data = new Dictionary <string, string>(); MemoryStream ms = new System.IO.MemoryStream(System.IO.File.ReadAllBytes(saveURl)); try { string strDescription = model.DateTimeOriginal + "\r\n"; strDescription += model.StoreAddr + "\r\n"; // + " 精度(" + model.SignPoint + ")" ; strDescription += model.StoreCode + " " + model.StoreName + "\r\n"; strDescription += model.EmpCode + " " + model.EmpName + "(" + model.EmpDuty + ")\r\n"; System.Drawing.Image image = System.Drawing.Image.FromStream(ms); Graphics g = Graphics.FromImage(image); //Brush drawBrush = new SolidBrush(System.Drawing.Color.FromArgb(((System.Byte)(222)), ((System.Byte)(243)), ((System.Byte)(255)))); //自定义字体颜色 Font font = new Font("宋体", 10); SizeF sizeF = g.MeasureString(" " + strDescription + " ", font); Color Mycolor = System.Drawing.Color.FromArgb(0, 0, 0, 0); //说明:1-(128/255)=1-0.5=0.5 透明度为0.5,即50% SolidBrush sb1 = new System.Drawing.SolidBrush(Mycolor); g.FillRectangle(sb1, new RectangleF(new PointF(0, image.Height - 100), sizeF)); //FillRoundRectangle(g, sb1, new Rectangle(15, 20, (int)sizeF.Width+20, (int)sizeF.Height), 8); //DrawRoundRectangle(g, Pens.Transparent, new Rectangle(15, 20, (int)sizeF.Width +20, (int)sizeF.Height), 8); g.DrawString(strDescription, new Font("宋体", 10), Brushes.White, new PointF(2, image.Height - 94)); System.IO.File.Delete(saveURl); image.Save(saveURl); var url = filePath + filename; data.Add("status", "1"); data.Add("content", "上传成功"); data.Add("url", url); data.Add("filename", filename); } catch (Exception ex) { data.Add("status", "0"); data.Add("content", "上传失败"); data.Add("url", ""); data.Add("filename", ""); } finally { ms.Close(); } //string returnstring=PostApply(hpf, DateTimeOriginal, GPSLatitude, GPSLongitude); return(data); }