安安静静是女神
安安静静是女神
  • 发布:2021-01-04 13:54
  • 更新:2023-08-02 16:29
  • 阅读:2270

【uni-app】 uni.uploadFile 上传文件 至OSS后 在响应头里返回版本信息 如何拿到响应头里的数据

分类:uni-app

RT
【uni-app】 uni.uploadFile 上传文件 至OSS后 在响应头里返回版本信息 如何拿到响应头里的数据
在返回的结果里只有提示上传成功 data为空

2021-01-04 13:54 负责人:无 分享
已邀请:
安安静静是女神

安安静静是女神 (作者)

const policy = _this.getPolicyBase64(6000)  
const signature = _this.getSignature(policy); //获取签名  
uni.uploadFile({  
                    url: _this.uploadConf.other.host, //oss上传地址  
                    filePath: filePath,  
                    name: 'file',  
                    formData: {  
                        'key': fileName,   
                        'policy': policy,  
                        'x-oss-security-token': _this.uploadConf.config.stsToken, //后台返回的token  
                        'OSSAccessKeyId': _this.uploadConf.config.accessKeyId,//后台返回的accessKeyId  
                        'Signature': signature,  
                        'success_action_status': '200'  
                    },  
                    success: (uploadFileRes) => {  
                                               console.log(uploadFileRes)  
                    },  
                    complete: (err) => {  
                        console.log(err)  
                    }  
                })  

getPolicyBase64(timeout) {  
                const FILE_SIZE = 100 * 1024 * 1024; // 5MB  
                let date = new Date();  
                date.setHours(date.getHours() + timeout);  
                let srcT = date.toISOString();  
                const policyText = {  
                    "expiration": srcT, //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了   
                    "conditions": [{  
                            "bucket": this.uploadConf.config.bucket  //oss Bucket    
                        },  
                        ["content-length-range", 0, FILE_SIZE] // 设置上传文件的大小限制,5mb  
                    ]  
                };  
                const base64 = require('../../common/ossutil/base64.js');  
                const policyBase64 = base64.encode(JSON.stringify(policyText));  
                return policyBase64;  
            },  
getSignature(policyBase64) {  
                let _this = this;  
                require('../../common/ossutil/hmac.js');  
                require('../../common/ossutil/sha1.js');  
                const Crypto = require('../../common/ossutil/crypto.js');  
                const accesskey = _this.uploadConf.config.accessKeySecret;  
                const bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, accesskey, {  
                    asBytes: true  
                });  
                const signature = Crypto.util.bytesToBase64(bytes);  
                return signature;  
            },

hmac.js sha1.js crypto.js 这三个自己找一下

v***@yeah.net

v***@yeah.net

你好,请问你是怎么上传到oss里面的?能给贴部分代码吗?

2***@qq.com

2***@qq.com

请问如何获取响应头有方法了么?

9***@qq.com

9***@qq.com

不用拿,路径就是自己设置的_this.uploadConf.other.host+fileName

前端JASON

前端JASON - 接单uniapp项目&插件/联系front_jason/主页daxiong.site

要回复问题请先登录注册