| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
							- var CosAuth = require('./lib/cos-auth');
 
- var config = require('./config');
 
- var uploadFile = function () {
 
-     // 请求用到的参数
 
-     // var prefix = 'https://cos.' + config.Region + '.myqcloud.com/' + config.Bucket + '/'; // 这个是后缀式,签名也要指定 Pathname: '/' + config.Bucket + '/'
 
-     var prefix = 'https://' + config.Bucket + '.cos.' + config.Region + '.myqcloud.com/';
 
-     // 对更多字符编码的 url encode 格式
 
-     var camSafeUrlEncode = function (str) {
 
-         return encodeURIComponent(str)
 
-             .replace(/!/g, '%21')
 
-             .replace(/'/g, '%27')
 
-             .replace(/\(/g, '%28')
 
-             .replace(/\)/g, '%29')
 
-             .replace(/\*/g, '%2A');
 
-     };
 
-     // 获取临时密钥
 
-     var stsCache;
 
-     var getCredentials = function (callback) {
 
-         if (stsCache && Date.now() / 1000 + 30 < stsCache.expiredTime) {
 
-             callback(stsCache.credentials);
 
-             return;
 
-         }
 
-         wx.request({
 
-             method: 'GET',
 
-             url: config.stsUrl, // 服务端签名,参考 server 目录下的两个签名例子
 
-             dataType: 'json',
 
-             success: function (result) {
 
-                 var data = result.data;
 
-                 var credentials = data.credentials;
 
-                 if (credentials) {
 
-                     stsCache = data
 
-                 } else {
 
-                     wx.showModal({title: '临时密钥获取失败', content: JSON.stringify(data), showCancel: false});
 
-                 }
 
-                 callback(stsCache && stsCache.credentials);
 
-             },
 
-             error: function (err) {
 
-                 wx.showModal({title: '临时密钥获取失败', content: JSON.stringify(err), showCancel: false});
 
-             }
 
-         });
 
-     };
 
-     // 计算签名
 
-     var getAuthorization = function (options, callback) {
 
-         getCredentials(function (credentials) {
 
-             callback({
 
-                 XCosSecurityToken: credentials.sessionToken,
 
-                 Authorization: CosAuth({
 
-                     SecretId: credentials.tmpSecretId,
 
-                     SecretKey: credentials.tmpSecretKey,
 
-                     Method: options.Method,
 
-                     Pathname: options.Pathname,
 
-                 })
 
-             });
 
-         });
 
-     };
 
-     // 上传文件
 
-     var uploadFile = function (filePath) {
 
-         var Key = filePath.substr(filePath.lastIndexOf('/') + 1); // 这里指定上传的文件名
 
-         getAuthorization({Method: 'POST', Pathname: '/'}, function (AuthData) {
 
-             var requestTask = wx.uploadFile({
 
-                 url: prefix,
 
-                 name: 'file',
 
-                 filePath: filePath,
 
-                 formData: {
 
-                     'key': Key,
 
-                     'success_action_status': 200,
 
-                     'Signature': AuthData.Authorization,
 
-                     'x-cos-security-token': AuthData.XCosSecurityToken,
 
-                     'Content-Type': '',
 
-                 },
 
-                 success: function (res) {
 
-                     var url = prefix + camSafeUrlEncode(Key).replace(/%2F/g, '/');
 
-                     if (res.statusCode === 200) {
 
-                         wx.showModal({title: '上传成功', content: url, showCancel: false});
 
-                     } else {
 
-                         wx.showModal({title: '上传失败', content: JSON.stringify(res), showCancel: false});
 
-                     }
 
-                     console.log(res.statusCode);
 
-                     console.log(url);
 
-                 },
 
-                 fail: function (res) {
 
-                     wx.showModal({title: '上传失败', content: JSON.stringify(res), showCancel: false});
 
-                 }
 
-             });
 
-             requestTask.onProgressUpdate(function (res) {
 
-                 console.log('正在进度:', res);
 
-             });
 
-         });
 
-     };
 
-     // 选择文件
 
-     wx.chooseImage({
 
-         count: 1, // 默认9
 
-         sizeType: ['original'], // 可以指定是原图还是压缩图,这里默认用原图
 
-         sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
 
-         success: function (res) {
 
-             uploadFile(res.tempFiles[0].path);
 
-         }
 
-     })
 
- };
 
- module.exports = uploadFile;
 
 
  |