前言
(一)開(kāi)通OSS服務(wù)與新建Bucket
開(kāi)通OSS服務(wù)這里省略,新建bucket。
(二)設(shè)置Bucket屬性,后臺(tái)配置域名
上傳文件訪(fǎng)問(wèn)域名
這里我們要在小程序后臺(tái)配置上傳域名(上面的域名是我自己的申請(qǐng)的,后臺(tái)配置的是公司的的域名,使用的時(shí)候你們用一套東西即可)。
下圖是bucket管理,這里可以新建文件的保存路徑,域名管理。
(三)服務(wù)端簽名直傳
這里就不多做介紹了,這是上傳文件到oss需要的參數(shù),這些數(shù)據(jù)可以從后臺(tái)獲取。
{ "accessid": "6MKO******4AUk44", "host": "http://post-test.oss-cn-hangzhou.aliyuncs.com", "policy": "eyJleHBpcmF0aW9uIjoiMjAxNS0xMS0wNVQyMDoyMzoyM1oiLCJjxb25kaXRpb25zIjpbWyJjcb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsInVzZXItZGlyXC8iXV19", "signature": "I2u5*******yff151E=", "expire": 1446726203, "dir": "user-dir/"}Policy的內(nèi)容:
{"expiration":"2015-11-05T20:23:23Z","conditions":[["content-length-range",0,1048576000],["starts-with","$key","user-dir/"]]Policy說(shuō)明:
Policy中增加了starts-with,用來(lái)指定此次上傳的文件名必須以u(píng)ser-dir開(kāi)頭,用戶(hù)可自行指定此字符串。增加starts-with的原因是:在很多場(chǎng)景下,一個(gè)應(yīng)用對(duì)應(yīng)一個(gè)Bucket,為了防止數(shù)字覆蓋,每個(gè)用戶(hù)上傳到OSS的文件都可以有特定的前綴。這樣就存在一個(gè)問(wèn)題,用戶(hù)獲取到這個(gè)Policy后,在失效期內(nèi)都能修改上傳前綴,從而上傳到別人的目錄下。為了解決這個(gè)問(wèn)題,可以設(shè)置應(yīng)用服務(wù)器在上傳時(shí)就指定用戶(hù)上傳的文件必須是某個(gè)前綴。這樣如果用戶(hù)獲取到了Policy也沒(méi)有辦法上傳到別人的前綴上,從而保證了數(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() {}, }) },因?yàn)樯蟼魑募袝r(shí)效性,所以在每次上傳的時(shí)候都要重新獲取上傳的參數(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) } }) },以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注