全部产品
Search
文档中心

对象存储 OSS:如何实现Python服务端签名直传回调

更新时间:Dec 13, 2024

本文以Python语言为例,讲解在服务端通过Python代码完成签名,并且设置上传回调,然后通过表单直传数据到OSS。

操作步骤

本文所使用的ROS模板文件:Python-ros.yml

快速部署

您可以使用资源编排ROS一键配置1个云服务器ECS实例和1个对象存储OSS Bucket,并在云服务器ECS实例上部署应用服务器源码(Python版本)客户端源码,从而快速体验服务端签名直传回调。使用资源编排ROS快速体验服务端签名直传回调的操作步骤如下。

  1. 一键部署云资源。

    1. 打开一键配置模板链接

    2. 资源编排 ROS控制台,输入资源栈名称,输入新建OSS Bucket的名称,设置新购ECS的可用区、实例类型、系统盘类型、实例密码,然后单击创建

      资源栈的资源栈信息页签下的状态显示创建中

    3. 资源栈的状态显示创建成功后,单击输出页签,查看一键部署的云服务器ECS实例、OSS Bucket等资源。

  2. 体验服务端签名直传。

    1. 输出页签下,复制UploadPath的值,然后在浏览器中打开。

    2. OSS web直传页面,单击选择文件,选择指定类型的文件,然后单击开始上传

  3. 体验完成后,释放测试资源,避免继续产生费用。

    1. 资源栈页面的右上角,单击删除

    2. 删除资源栈页面,确保删除方式释放资源,然后单击确定

手动部署

前提条件

  • 应用服务器对应的域名可通过公网访问。

  • 确保应用服务器已经安装Python 2.6以上版本(执行python --version命令进行查看)。

  • 确保PC端浏览器支持JavaScript。

步骤1:配置应用服务器

  1. 下载应用服务器源码(Python版本)

  2. 本示例中以Ubuntu 16.04为例,将源码解压到/home/aliyun/aliyun-oss-appserver-python目录下。

  3. 进入该目录,打开源码文件appserver.py,修改如下的代码片段:

    # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
    access_key_id = 'yourAccessKeyId'
    access_key_secret = 'yourAccessKeySecret'
    # 填写Host地址,格式为https://bucketname.endpoint。
    host = 'https://examplebucket.oss-cn-hangzhou.aliyuncs.com'
    # 设置上传回调URL,即回调服务器地址,用于处理应用服务器与OSS之间的通信。OSS会在文件上传完成后,把文件上传信息通过此回调URL发送给应用服务器。
    callback_url = "https://192.168.0.0:8888"
    # 设置上传到OSS文件的前缀,可置空此项。置空后,文件将上传至Bucket的根目录下。
    upload_dir = 'exampledir/'

步骤2:配置客户端

  1. 下载客户端源码

  2. 解压客户端源码文件,本示例解压到D:\aliyun\aliyun-oss-appserver-js目录。

  3. 进入该目录,打开upload.js文件,找到下面的代码语句:

    // serverUrl是用户获取签名和Policy等信息的应用服务器的URL,请对应替换以下IP地址和Port端口信息。
    serverUrl = 'http://192.0.2.0:8888'
  4. severUrl改成应用服务器的地址,客户端可以通过它可以获取签名直传Policy等信息。如本例中可修改为:serverUrl = 'https://192.168.0.0:8888'

步骤3:修改CORS

客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请求消息。OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。具体操作步骤,可参考跨域设置

步骤4:体验上传回调

  1. 启动应用服务器。

    /home/aliyun-oss-appserver-python目录下,执行python appserver.py 11.22.XX.XX 1234命令启动应用服务器。

    说明

    请将IP地址和端口改成您配置的应用服务器的IP地址和端口。

  2. 启动客户端。

    在PC侧的客户端源码目录中,打开index.html文件。

    重要

    index.html文件不保证兼容IE 10以下版本浏览器,若使用IE 10以下版本浏览器出现问题时,您需要自行调试。

  3. 上传文件。

    单击选择文件,选择指定类型的文件后,单击开始上传。上传成功后,显示回调服务器返回的内容。