away27

首先最近的写一个微信小程序的项目中需要往服务器上传图片,小程序有专门的 wx.uploadFile()来上传图片,但是在这里采用的是 wx.request()实现。

具体步骤:

  1.首先从手机中选择想要获取的图片进行上传。

    1.1在这里要使用到一个 微信API wx.chooseImage,该API的功能就是从本地相册选择图片或使用相机拍照。

     实例代码:

      wx.chooseImage({

        count: 1, //选择图片数量。

        sizeType: [\'original\', \'compressed\'], //原图和压缩图。
        sourceType: [\'album\', \'camera\'], //利用相机拍摄,从本地选择。
        success(res) {
        const tempFilePaths = res.tempFilePaths //图片的本地临时文件路径列表 (本地路径)
        }
      })

     运行结果:

      
      然后点击你想上传的图片进行上传即可。

    1.2 完整实现      

      wx.chooseImage({
       count: 1, // 设置最多1张
       sizeType: [\'original\', \'compressed\'], //所选的图片的尺寸
       sourceType: [\'album\', \'camera\'], //选择图片的来源
       success(res) {
        var team_image = wx.getFileSystemManager().readFileSync(res.tempFilePaths[0], "base64") //将图片进行base64编码。
        wx.request({
          url: \'https://www.hello.com/image\', //API地址
           method: "POST",
        header: {
         \'content-type\': "application/x-www-form-urlencoded",
        },
        data: {
         image: team_image,
        },
        success: function (reg) {
          console.log(reg)
        }
        })
       }
      })

  2.将选择的图片上传到后端,保存到服务器。

    后端flask处理API请求:

    @assignment_bp.route("/testimage",methods=[\'GET\',\'POST\'])
    def testimage():
    team_image =base64.b64decode(request.form.get("image")) #队base64进行解码还原。
    with open("static/111111.jpg","wb") as f:  #存入图片,存入地址为服务器中的项目地址。
    f.write(team_image)
    return json.dumps("ok")
  3.检测是否上传成功。

    3.1通过查看服务器中的对应文件查看

    

    3.2如果有域名的话可以部署项目后利用URL进行访问

    https://www.hello.com/static/1111.jpg(实例url,无法访问)

分类:

技术点:

相关文章: