微信小程序样例-小相册python后台

最近在学微信小程序,在看了官方文档后,准备写一个demo练练手…可是前端代码太难写了. 去网上找到一个官方集合腾讯云小程序的示例. 想着先跑起来,再照着练习一下

引用其中的介绍:

小相册是结合腾讯云对象存储服务(Cloud Object Service,简称COS)制作的一个微信小程序示例。在代码结构上包含如下两部分: app: 小相册应用包代码,可直接在微信开发者工具中作为项目打开 server: 搭建的Node服务端代码,作为服务器和app通信,提供 CGI 接口示例用于拉取 COS 图片资源、上传图片到 COS、删除 COS 图片

将应用包代码导入,服务端代码部署好运行,小相册没有丝毫反应…

由于倔(mei)强(qian),没有照着教程购买相应服务.导致一些坑点总结如下:

  1. 我的域名没有备案,无法在微信后台添加安全域名. 在微信开发者平台项目设置 选上不校验安全域名、TLS 版本以及 HTTPS 证书
  2. cos中 创建的Bucket 设置为公有读私有写访问权限.而且要预先上传一张图片,不然客户端什么都不显示.
  3. 腾讯云对象存储服务的api修改了,原项目的配置信息要做相应修改 配置改一下应该还是能运行起来的.js代码不熟,后来我也没有去再试 下面是我用python改写的小相册后台. 其它cos,服务器的一些相关配置参考原小相册项目.

参考文档:

    #coding=utf-8
    from flask import Flask
    from flask import request
    from qcloud_cos import CosConfig
    from qcloud_cos import CosS3Client
    from qcloud_cos import CosServiceError
    from qcloud_cos import CosClientError
    import json
    
    app = Flask(__name__)
    
    # appid已在配置中移除,请在参数Bucket中带上appid。Bucket由bucketname-appid组成
    # 设置用户配置, 包括 secretId,secretKey 以及 Region
    secret_id = 'xxxxxxxxxxxxxxxxx'         # 替换为用户的secret_id
    secret_key = 'xxxxxxxxxxxxxxxx'         # 替换为用户的secret_key
    region = 'ap-guangzhou'     # 替换为用户的 Region
    token = ''                  # 使用临时秘钥需要传入 Token,默认为空,可不填
    bucket='photo-1252498671'   # 访问资源域名的前缀, 为 Bucket名称-appid 可在bucket控制台域名管理处看到
    
    config = CosConfig(Secret_id=secret_id, Secret_key=secret_key, Region=region, To                                        ken=token)
    # 获取客户端对象
    client = CosS3Client(config)
    
    @app.route('/list', methods=['GET', 'POST'])
    def list():
        # 调用接口获取文件列表
        response = client.list_objects(
            Bucket=bucket,
            MaxKeys=100,
        )
    
        #将图片链接保存到
        datalist =  []
        try :
            for item in response['Contents']:
                if item['Key'].endswith(('.png','.jpg')):
                    datalist.append('http://'+bucket+'.cos.'+region+'.myqcloud.com/'                                        +item['Key'])
        except:
            pass
        returnjson = {
                'code': 0,
                'msg': 'ok',
                'data': datalist,
        }
    
        return  json.dumps(returnjson)
    
    @app.route('/upload', methods=['POST'])
    def upload():
        #获取请求文件
        imgfile =  request.files['image']
        #获取文件名字
        temp =  imgfile.filename.rsplit('.')
        filename = temp[1]+temp[0]
        #获取文件字节流
        imgfilebinary = imgfile.read()
    
        #调用接口请求上传文件
        response = client.put_object(
            Bucket=bucket,
            Body=imgfilebinary,
            Key=filename,
            CacheControl='no-cache',
        )
    
        returnjson = {
            'code': 0,
            'msg': 'ok',
            'data': {'imgUrl':'http://'+bucket+'.cos.'+region+'.myqcloud.com/'+filen                                        ame},
        }
    
        return json.dumps(returnjson)
    
    @app.route('/delete', methods=['POST','GET'])
    def delete():
        #从请求参数获取文件名
        filename=eval(request.data)['filepath']
    
        #调用接口删除文件
        response = client.delete_object(
            Bucket=bucket,
            Key= filename
        )
    
        returndata = {
            'code': 0,
            'msg': 'ok',
        }
    
        return json.dumps(returndata)
    
    if __name__ == '__main__':
        app.run(
            host = '0.0.0.0',
            port = 9993,
            debug = True
        )
0

Powered by Jekyll and Theme by solid