zoukankan      html  css  js  c++  java
  • asp.net mvc微信公众号开发之上传永久素材

    1、上传永久图片素材,注意构造请求头部信息时name="media"就行了

      视图代码:

      @using (Html.BeginForm("UploadFile", "MenuConfig", FormMethod.Post, new { enctype = "multipart/form-data" }))
      {
        <span>上传文件</span>
        <input type="file" name="file" id="f" />
        <input id="ButtonUpload" type="submit" value="提交" />
      }

      Action代码:

      /// <summary>

      /// 上传图片素材调用微信接口
      /// </summary>
      /// <param name="file"></param>
      /// <returns></returns>
      public JsonResult UploadPhoto(HttpPostedFileBase file)
      {
        var buf = new byte[file.InputStream.Length];
        file.InputStream.Read(buf, 0, (int)file.InputStream.Length);
        string resultUpload = WeixinConfigBusiness.HttpUploadFile(file.FileName, buf);
        var jsonObj = JsonConvert.DeserializeObject<JObject>(resultUpload);//获取上传后返回的结果状态
        if (jsonObj["media_id"] != null && jsonObj["media_id"].ToString() != "")//如果上传成功.....
        {
          return Json(new { result = true });
        }
          return Json(new { result = false });
      }

      

      /// <summary>
      /// 上传永久图片素材并获取media_id和图片URL
      /// </summary>
      public static string HttpUploadFile(string path, byte[] bf)
      {

        var accessToken = new WeixinConfigBusiness().GetAccessToken();
        string url = string.Format("https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={0}&type={1}", accessToken, "image");
        return HttpUploadPhoto(url, path, bf);
      }
      /// <summary>
      ///
      /// </summary>
      /// <param name="url"></param>
      /// <param name="path"></param>
      /// <param name="bf"></param>
      /// <returns></returns>
      public static string HttpUploadPhoto(string url, string path, byte[] bf)
      {
        var accessToken = new WeixinConfigBusiness().GetAccessToken();
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        CookieContainer cookieContainer = new CookieContainer();
        request.CookieContainer = cookieContainer;
        request.AllowAutoRedirect = true;
        request.Method = "POST";
        string boundary = DateTime.Now.Ticks.ToString("X"); // 随机分隔线
        request.ContentType = "multipart/form-data;charset=utf-8;boundary=" + boundary;
        byte[] itemBoundaryBytes = Encoding.UTF8.GetBytes(" --" + boundary + " ");
        byte[] endBoundaryBytes = Encoding.UTF8.GetBytes(" --" + boundary + "-- ");
        int pos = path.LastIndexOf("\");
        string fileName = path.Substring(pos + 1);
        //请求头部信息
        StringBuilder sbHeader = new StringBuilder(string.Format("Content-Disposition:form-data;name="media";filename="{0}" Content-Type:application/octet-stream ", fileName));
        byte[] postHeaderBytes = Encoding.UTF8.GetBytes(sbHeader.ToString());
        Stream postStream = request.GetRequestStream();
        postStream.Write(itemBoundaryBytes, 0, itemBoundaryBytes.Length);
        postStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);
        postStream.Write(bf, 0, bf.Length);
        postStream.Write(endBoundaryBytes, 0, endBoundaryBytes.Length);
        postStream.Close();
        //发送请求并获取相应回应数据
        HttpWebResponse response = request.GetResponse() as HttpWebResponse;
        Stream instream = response.GetResponseStream();
        StreamReader sr = new StreamReader(instream, Encoding.UTF8);
        string content = sr.ReadToEnd();
        return content;
      }

      

  • 相关阅读:
    Pascal's Triangle II
    Pascal's Triangle
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Populating Next Right Pointers in Each Node
    path sum II
    Path Sum
    [转载]小波时频图
    [转载]小波时频图
    [转载]Hilbert变换及谱分析
  • 原文地址:https://www.cnblogs.com/IclearByte/p/5406178.html
Copyright © 2011-2022 走看看