本文以Python語言為例,講解在服務端通過Python程式碼完成簽名,並且設定上傳回調,然後通過表單直傳資料到OSS。
操作步驟
快速部署
您可以使用Resource Orchestration Service一鍵配置1個Elastic Compute Service執行個體和1個Object Storage Service Bucket,並在Elastic Compute Service執行個體上部署應用伺服器源碼(Python版本)和用戶端源碼,從而快速體驗服務端簽名直傳回調。使用Resource Orchestration Service快速體驗服務端簽名直傳回調的操作步驟如下。
一鍵部署雲資源。
開啟一鍵配置模板連結。
在資源編排 ROS控制台,輸入資源棧名稱,輸入建立OSS Bucket的名稱,設定新購ECS的可用性區域、執行個體類型、系統硬碟類型、執行個體密碼,然後單擊創建。
資源棧的資源棧資訊頁簽下的狀態顯示建立中。
資源棧的狀態顯示建立成功後,單擊輸出頁簽,查看一鍵部署的Elastic Compute Service執行個體、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以下版本瀏覽器出現問題時,您需要自行調試。
上傳檔案。
單擊選擇檔案,選擇指定類型的檔案後,單擊開始上傳。上傳成功後,顯示回調伺服器返回的內容。