美文网首页小程序学习后端之美-ASP.net
.NET开发微信小程序-生成二维码/上传图片到服务器

.NET开发微信小程序-生成二维码/上传图片到服务器

作者: 极乐叔 | 来源:发表于2017-12-05 15:35 被阅读22次

    1.生成小程序二维码功能

    直接请求相应的链接。传递相应的参数

    以生成商铺的付款码为例:

    var shopsId = e.ShopsId
         //付款码的参数
         var codeModel = new function () { }
         codeModel.path = "pages/PageWxPay/PageWxPay?shopsId=" + shopsId
         codeModel.width = 430
         codeModel.auto_color = false
         codeModel.line_color = { "r": "0", "g": "0", "b": "0" }
         var data = {
           shopsID: shopsId,
           data: JSON.stringify(codeModel)
         }
         console.log(data)
         api.RequestApiURL("Weixin/MyPaymentCode", data, function (codeData) {
           console.log(codeData)
           var obj = codeData.data.data
           if (obj.Key == "0") {
             that.setData({
               payCodeUrl: app.globalData.apiurl + obj.Value
             })
             wx.hideLoading()
           }
           else {
             wx.showToast({ title: obj.Value })
           }
         })
    
    

    后台代码处理

    private static object obj = new object();
            /// <summary>
            /// 创建二维码
            /// 接口A: 适用于需要的码数量较少的业务场景 接口地址:
            /// 接口B:适用于需要的码数量极多,或仅临时使用的业务场景
            /// 接口C:适用于需要的码数量较少的业务场景
            /// </summary>
            /// <param name="data">前台传递的数据</param>
            /// <param name="path">图片存储位置</param>
            /// <param name="toKen"></param>
            /// <returns></returns>
            public static bool CreateWxaqrCode(Utils.QrCodeType nType, string data, string path, string toKen, out string ExcaptionMassage)
            {
                ExcaptionMassage = "";
                bool msg = false;
                string url = string.Empty;
                switch (nType)
                {
                    case Utils.QrCodeType.A:
                        url = "https://api.weixin.qq.com/wxa/getwxacode?access_token={0}";
                        break;
                    case Utils.QrCodeType.B:
                        url = "http://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";
                        break;
                    case Utils.QrCodeType.C:
                        url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token={0}";
                        break;
                }
                url = string.Format(url, toKen);
                lock (obj)
                {
                    //判断当前用户是否生成二微码
                    if (!System.IO.File.Exists(path))
                    {
                        try
                        {
                            //获取数据流
                            Stream str = Request.PostMoths(url, data);
                            byte[] by = Utils.StreamToBytes(str);
                            Utils.PreservationCodeImage(path, by);
                            //保存该文件
                            msg = true;
                        }
                        catch(Exception e)
                        {
                            ExcaptionMassage= e.Message;
                            msg = false;//出现异常
                        }
                    }
                }
                return msg;
            }
    
    

    注:PostMoths方法在小程序基础配置里面有StreamToBytes方法PreservationCodeImage方法在支付里面有。

    2、上传图片到服务器

    上传图片分为几种:

    a:上传图片到本地(永久保存)
    b:上传图片到本地(临时保存)
    c:上传图片到服务器
    
    

    a和b在小程序的api文档里面有。直接说C:上传图片到服务器

    前端代码:

    /*
    上传图片到服务器  wx.uploadFile
    url:后台上传文件路径地址
    data:自定义参数 {'userID':'0001'}
    fileName:接收数据的参数名称,后台参数类型:System.Web.HttpPostedFileWrapper
    CallBack:返回路径
    暂时fileName方法传的是:file
    */ function UploadImage(url,data,fileName,CallBack)
    {
      wx.chooseImage({
        success: function (res) {
          var tempFilePaths = res.tempFilePaths
          wx.showLoading({ title: '正在上传', mask: true})
          wx.uploadFile({
            url: url,
            filePath: tempFilePaths[0],//临时路径         name: fileName,
            formData: data,
            success: function (res) {
              var data = res.data
              wx.hideLoading()
              CallBack(data)
            }
          })
        }
      })
    }
    
    

    后台实现:

    /// <summary> /// 上传图片
            /// </summary> /// <param name="file"></param> /// <param name="userID"></param> /// <returns></returns> public string UploadImage(HttpPostedFileWrapper file, string userID)
            {
                var msg= bll.UploadImage(file.InputStream, userID);
                var result = new ReturnResult<string>(msg);
                return result.Serialize();
            }
    
    

    file参数里面就是数据流的信息,可自行获取之后进行保存。

    本文作者:KidYang

    原文地址:NET开发微信小程序-生成二维码-教程-小程序社区-微信小程序-微信小程序开发社区-小程序开发论坛-微信小程序联盟

    相关文章

      网友评论

        本文标题:.NET开发微信小程序-生成二维码/上传图片到服务器

        本文链接:https://www.haomeiwen.com/subject/fhjcixtx.html