怎样能注册自己的网站网页制作工具有哪些
阿里OSS对象存储
前几天公司要求做一个app上传视频和图文的功能,针对视频与图片的上传,公司这边走的是阿里的OSS对象存储。
在之前的测试过程中,部分视频上传会失败。由于我对这个OSS存储不是很熟,因此我咨询了阿里的售后工程师,结果发现:我挺瞎的……[捂脸]
与阿里售后工程师聊天记录如下:
问题描述:有些几M的视频是可以上传成功的,但是超过几M之后就不能上传成功了,但是具体几M,我还不清楚……,也没有办法弹窗提示用户。
在提供了一系列的上传参数后,阿里工程师回复如下:
在前端代码中,我找到了这个content-length-range
字段,然后将参数调大,问题解决……
后面附上Uniapp上传视频到阿里OSS对象存储后,返回网址的代码:
async chooseVideo() {let _this = this;console.log(_this.editorCtx);uni.chooseVideo({count: 1, //最多可以选择的图片张数,默认9sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有sourceType: ['album', 'camera'], //album 从相册选图,camera 使用相机,默认二者都有success: (respone) => {uni.showLoading({title: '加载中' });console.log(respone.size);if(respone.size > 100 *1024 *1024){uni.showToast({title:"当前视频超过100M",icon:"none"})return;}_this.$request.urlRequest('/gate/oss/token', {},'GET',(res) => {if (res.code == 200) {let data = res.result;console.log(data);let env = {uploadImageUrl: 'https://58d.oss-cn-hangzhou.aliyuncs.com/', // 默认存在根目录,可根据需求改AccessKeySecret: data.AccessKeySecret, // AccessKeySecret 去你的阿里云上控制台上找OSSAccessKeyId: data.AccessKeyId, // AccessKeyId 去你的阿里云上控制台上找stsToken: data.SecurityToken,timeout: 87600 //这个是上传文件时Policy的失效时间}let dir = 'shipin/';console.log(respone);let filePath = respone.tempFilePath;const aliyunFileKey = dir + new Date().getTime() + Math.floor(Math.random() * 150) + '.mp4';const aliyunServerURL = env.uploadImageUrl; //OSS地址,需要httpsconst accessid = env.OSSAccessKeyId;const policyBase64 = _this.getPolicyBase64(env);const signature = _this.getSignature(policyBase64, env); //获取签名const stsToken = env.stsToken;let param = {'key': aliyunFileKey,'policy': policyBase64,'OSSAccessKeyId': accessid,'signature': signature,'success_action_status': '200','x-oss-security-token': stsToken,'stsToken': stsToken};uni.uploadFile({url: "https://58d.oss-cn-hangzhou.aliyuncs.com/", //开发者服务器 urlfilePath: filePath, //要上传文件资源的路径name: 'file', //必须填fileformData: param,success: (res) => {uni.hideLoading();_this.detail.media = aliyunServerURL + aliyunFileKey;console.log(_this.detail.media);},fail: (err) => {uni.hideLoading();},})}})}});
},
getSignature(policyBase64, env) {const accesskey = env.AccessKeySecret;const bytes = Crypto.HMAC(Crypto.SHA1, policyBase64, accesskey, {asBytes: true});const signature = Crypto.util.bytesToBase64(bytes);return signature;
},
getPolicyBase64(env) {let date = new Date();date.setHours(date.getHours() + env.timeout);let srcT = date.toISOString();const policyText = {"expiration": srcT, //设置该Policy的失效时间,超过这个失效时间之后,就没有办法通过这个policy上传文件了"conditions": [["content-length-range", 0, 100 * 1024 * 1024] // 设置上传文件的大小限制,50mb]};const policyBase64 = base64.encode(JSON.stringify(policyText));return policyBase64;
},