本文共 2771 字,大约阅读时间需要 9 分钟。
1.获取参数,指定文件绝对路径
private string getCommand() { return string.Format(" -F media=@\"{0}\" \"https://api.weixin.qq.com/cgi-bin/media/upload?access_token={1}&type=images\"" , this.FileName , this.config.Access_Token ); }
2.执行命令
////// 运行cmd命令 /// 不显示命令窗口 /// /// 指定应用程序的完整路径 /// 执行命令行参数 public static string RunCmd2(string cmdStr) { try { using (Process myPro = new Process()) { //指定绝对路径 // myPro.StartInfo.FileName = @"I:\AppSolution\curl_pkg\curl-7.57.0-win64-mingw\bin\curl.exe"; //使用环境变量路径 string enPath = Environment.GetEnvironmentVariable("CURL_HOME"); LogOperate.Write("当前命令的环境变量:"+enPath); myPro.StartInfo.FileName = enPath + @"\curl.exe"; myPro.StartInfo.UseShellExecute = false; myPro.StartInfo.RedirectStandardInput = true; myPro.StartInfo.RedirectStandardOutput = true; myPro.StartInfo.RedirectStandardError = true; myPro.StartInfo.CreateNoWindow = true; myPro.StartInfo.Arguments = cmdStr; //指定参数 myPro.Start(); myPro.StandardInput.AutoFlush = true; //获取cmd窗口的输出信息 string output = myPro.StandardOutput.ReadToEnd(); myPro.WaitForExit(); myPro.Close(); return output; } } catch (Exception ex) { return ex.Message; } }
3.解析curl相应结果
#region 远程调用 ///在参数正确的情况下,以上三步就可以获取到图片的media_id。/// 上传图片返回图片id /// /// ///public string PostImage(string filename) { try { this.FileName = AppDomain.CurrentDomain.BaseDirectory + "data/" + filename; string command = getCommand(); LogOperate.Write("PostImage:" + command); //执行命令获取mediaid string backdata = RunCmd2(command); LogOperate.Write("backdata:" + backdata); JObject obj = JObject.FromObject(backdata); JToken media_id = obj.SelectToken("media_id"); if (media_id == null) throw new Exception($"获取media_id失败," + backdata); return media_id.ToString(); } catch (Exception ex) { LogOperate.Write("上传素材出错:" + ex.Message + "|" + ex.StackTrace); } return string.Empty; } #endregion
更多:
转载地址:http://hxogi.baihongyu.com/