微信小程序上傳文件到阿里OSS教程
前言
(一)開通OSS服務(wù)與新建Bucket
開通OSS服務(wù)這里省略,新建bucket。
(二)設(shè)置Bucket屬性,后臺配置域名
上傳文件訪問域名
這里我們要在小程序后臺配置上傳域名(上面的域名是我自己的申請的,后臺配置的是公司的的域名,使用的時候你們用一套東西即可)。
下圖是bucket管理,這里可以新建文件的保存路徑,域名管理。
(三)服務(wù)端簽名直傳
這里就不多做介紹了,這是上傳文件到oss需要的參數(shù),這些數(shù)據(jù)可以從后臺獲取。
{ "accessid": "6MKO******4AUk44", "host": "http://post-test.oss-cn-hangzhou.aliyuncs.com", "policy": "eyJleHBpcmF0aW9uIjoiMjAxNS0xMS0wNVQyMDoyMzoyM1oiLCJjxb25kaXRpb25zIjpbWyJjcb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsInVzZXItZGlyXC8iXV19", "signature": "I2u5*******yff151E=", "expire": 1446726203, "dir": "user-dir/" }
- accessid:用戶請求的accessid。
- host:用戶要往哪個域名發(fā)送上傳請求。
- policy:用戶表單上傳的策略(Policy),是經(jīng)過base64編碼過的字符串。
- signature:對變量policy簽名后的字符串。
- expire:上傳策略失效時間,在PolicyText里指定。在失效時間之前,都可以利用此Policy上傳文件,所以沒有必要每次上傳都去服務(wù)端獲取簽名。
Policy的內(nèi)容:
{"expiration":"2015-11-05T20:23:23Z", "conditions":[["content-length-range",0,1048576000], ["starts-with","$key","user-dir/"]]
Policy說明:
Policy中增加了starts-with,用來指定此次上傳的文件名必須以user-dir開頭,用戶可自行指定此字符串。增加starts-with的原因是:在很多場景下,一個應(yīng)用對應(yīng)一個Bucket,為了防止數(shù)字覆蓋,每個用戶上傳到OSS的文件都可以有特定的前綴。這樣就存在一個問題,用戶獲取到這個Policy后,在失效期內(nèi)都能修改上傳前綴,從而上傳到別人的目錄下。為了解決這個問題,可以設(shè)置應(yīng)用服務(wù)器在上傳時就指定用戶上傳的文件必須是某個前綴。這樣如果用戶獲取到了Policy也沒有辦法上傳到別人的前綴上,從而保證了數(shù)據(jù)的安全性。
(四)微信小程序上傳
getCloudCdnParams: function(filePath, index) { var that = this; var dataUrl = app.globalData.laiSignBaseUrl + "open/getOSSClient" var params = new Object(); params.type = app.globalData.imgesDir util.POST( dataUrl, { params, success: function(res) { if (res != null && res.data != null && res.data.success) { var result = res.data.result that.uploadFileFun(result, filePath, index) } }, fail: function() {}, }) },
因為上傳文件有時效性,所以在每次上傳的時候都要重新獲取上傳的參數(shù)。
// 上傳圖片 uploadFileFun: function(result, filePath, index) { var that = this; wx.uploadFile({ url: app.globalData.uploadFileBaseUrl, filePath: filePath, /**上傳的參數(shù)**/ formData: { name: filePath, key: app.globalData.imgesDir + "demo-file" + result.expire + index, policy: result.policy, OSSAccessKeyId: result.accessid, success_action_status: "200", signature: result.signature, }, success: function(res) { /**這邊上傳成功后要自己拼接文件的地址**/ coverUrl: app.globalData.uploadFileBaseUrl + "/" + app.globalData.imgesDir + "demo-file" + result.expire + index }, fail: function(res) { console.log(res) } }) },
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
asp錯誤 '80040e21' 多步 OLE DB&nbs
今天在寫asp入庫操作的時候提示Microsoft OLE DB Provider for ODBC Drivers 錯誤 80040e21 多步 OLE DB 操作產(chǎn)生錯誤,請檢查每個 OLE DB 狀態(tài)值,經(jīng)測試時函數(shù)定義文件沒有加載導(dǎo)致類型不對,所以無法入庫2023-05-05js控件Kindeditor實現(xiàn)圖片自動上傳功能
這篇文章主要為大家詳細(xì)介紹了js控件Kindeditor實現(xiàn)圖片自動上傳功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06微信小程序tabBar組件切換與下拉刷新實現(xiàn)詳解
tabBar相對而言用的還是比較多的,但是用起來并沒有難,下面這篇文章主要給大家介紹了關(guān)于微信小程序全局配置之tabBar的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10uploadify插件實現(xiàn)多個圖片上傳并預(yù)覽
這篇文章主要為大家詳細(xì)介紹了uploadify插件實現(xiàn)多個圖片上傳并預(yù)覽,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09extjs中form與grid交互數(shù)據(jù)(record)的方法
這篇文章介紹了extjs中form與grid交互數(shù)據(jù)(record)的方法,有需要的朋友可以參考一下2013-08-08JavaScript設(shè)計模式之原型模式(Object.create與prototype)介紹
這篇文章主要介紹了JavaScript設(shè)計模式之原型模式(Object.create與prototype)介紹,原型模式指使用原型實例來拷貝、創(chuàng)建新的可定制的對象,新建的對象,不需要知道原對象創(chuàng)建的具體過程,需要的朋友可以參考下2014-12-12