C# 使用curl工具 上传图片到微信服务器示例

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.执行命令

        /// <summary>
        /// 运行cmd命令
        /// 不显示命令窗口
        /// </summary>
        /// <param name="cmdExe">指定应用程序的完整路径</param>
        /// <param name="cmdStr">执行命令行参数</param>
       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 远程调用
        /// <summary>
        /// 上传图片返回图片id
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        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

在参数正确的情况下,以上三步就可以获取到图片的media_id。


更多:
curl工具使用简介 

如何判断微信内置浏览器(JS & .Net) 

微信 js-sdk 界面操作接口使用

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值