本文以Python语言为例,讲解在服务端通过Python代码完成签名,并且设置上传回调,然后通过表单直传数据到OSS。
操作步骤
本文所使用的ROS模板文件:Python-ros.yml
快速部署
您可以点击一键部署通过ROS快速完成搭建并部署服务,无需手动执行部署步骤。
体验服务端签名直传。
在输出页签下,复制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以下版本浏览器出现问题时,您需要自行调试。
上传文件。
单击选择文件,选择指定类型的文件后,单击开始上传。上传成功后,显示回调服务器返回的内容。