單個圖片上傳頁面,上傳後顯示圖片預覽
阿里雲OSS服務端簽名後直傳
我們都知道,採用JS客戶端直接簽名,OSSAccessId和AccessKeySecret暴露在前端頁面,可以被輕易獲取,存在嚴重安全隱患。
這裡提供了一種使用阿里雲OSS伺服器端簽名後直傳,避免這種危險的方法。由於阿里雲OSS開發文件只提供了Java,PHP,Python和Go語言的例子,本Demo在此提供一個以Node.js作為後端的例子,供大家參考。
請求邏輯:
- 客戶端要上傳圖片時,到應用伺服器取上傳的policy及簽名(signature)
- 應用伺服器返回上傳policy和signature
- 客戶端拿到了簽名後,直接上傳到OSS
目前支援
chrome, firefox瀏覽器,其他瀏覽器還未全面測試,歡迎大家測試後在Issues裡反饋。
使用
配置OSS
- 進入阿里雲管理控制檯 –> 物件儲存OSS
- 新建Bucket
- Bucket屬性 –> 跨域設定:
檢視自己的AccessKey
點選顯示,會彈出簡訊驗證視窗,驗證後即可顯示出你的AccessKeySecret
後端配置檔案
backend/src/config/development/app.js
module.exports = {
port: 3602,
oss: {
OSSAccessKeyId: `【這裡填你阿里雲的Access Key ID】`,
secret: `【這裡填你阿里雲的Access Key Secret】`,
host: `http://cqq.oss-cn-shenzhen.aliyuncs.com` //改為你自己阿里雲OSS的外網域名
}
}
複製程式碼
如何執行這個Demo?
- 後端:backend目錄
npm install
npm start
複製程式碼
- 前端:webfront目錄
npm install
npm run dev
複製程式碼