本文以Python语言为例,讲解在服务端通过Python代码完成签名,并且设置上传回调,然后通过表单直传数据到OSS。
操作步骤
本文所使用的ROS模板文件:Python-ros.yml
快速部署
您可以使用资源编排ROS一键配置1个云服务器ECS实例和1个对象存储OSS Bucket,并在云服务器ECS实例上部署应用服务器源码(Python版本)和客户端源码,从而快速体验服务端签名直传回调。使用资源编排ROS快速体验服务端签名直传回调的操作步骤如下。
一键部署云资源。
打开一键配置模板链接。
在资源编排 ROS控制台,输入资源栈名称,输入新建OSS Bucket的名称,设置新购ECS的可用区、实例类型、系统盘类型、实例密码,然后单击创建。
资源栈的资源栈信息页签下的状态显示创建中。
资源栈的状态显示创建成功后,单击输出页签,查看一键部署的云服务器ECS实例、OSS Bucket等资源。
体验服务端签名直传。
在输出页签下,复制UploadPath的值,然后在浏览器中打开。
在OSS web直传页面,单击选择文件,选择指定类型的文件,然后单击开始上传。
体验完成后,释放测试资源,避免继续产生费用。
资源栈页面的右上角,单击删除。
在删除资源栈页面,确保删除方式为释放资源,然后单击确定。
手动部署
前提条件
应用服务器对应的域名可通过公网访问。
确保应用服务器已经安装Python 2.6以上版本(执行python --version命令进行查看)。
确保PC端浏览器支持JavaScript。
步骤1:配置应用服务器
本示例中以Ubuntu 16.04为例,将源码解压到/home/aliyun/aliyun-oss-appserver-python目录下。
进入该目录,打开源码文件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:配置客户端
下载客户端源码。
解压客户端源码文件,本示例解压到D:\aliyun\aliyun-oss-appserver-js目录。
进入该目录,打开upload.js文件,找到下面的代码语句:
// serverUrl是用户获取签名和Policy等信息的应用服务器的URL,请对应替换以下IP地址和Port端口信息。 serverUrl = 'http://192.0.2.0:8888'
将
severUrl
改成应用服务器的地址,客户端可以通过它可以获取签名直传Policy等信息。如本例中可修改为:serverUrl = 'https://192.168.0.0:8888'
。
步骤3:修改CORS
客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin
的请求消息。OSS对带有Origin
头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。具体操作步骤,可参考跨域设置。
步骤4:体验上传回调
启动应用服务器。
在/home/aliyun-oss-appserver-python目录下,执行python appserver.py 11.22.XX.XX 1234命令启动应用服务器。
说明请将IP地址和端口改成您配置的应用服务器的IP地址和端口。
启动客户端。
在PC侧的客户端源码目录中,打开index.html文件。
重要index.html文件不保证兼容IE 10以下版本浏览器,若使用IE 10以下版本浏览器出现问题时,您需要自行调试。
上传文件。
单击选择文件,选择指定类型的文件后,单击开始上传。上传成功后,显示回调服务器返回的内容。