vue、uniapp直传阿里云文档

news/2024/11/8 12:04:47/

c、初始化OSS对象:

this.client = new OSS({region: '',//地域(在创建 Bucket 的时候指定的中心位置),这里可能不知道具体地域怎么填其实就是 oss-cn-中心位置 ,例:region:'oss-cn-chengdu',chengdu则是创建bucket是指定的位置成都。accessKeyId: '', //阿里云产品的通用idaccessKeySecret: '',//密钥bucket: '' //OSS 存储区域名
});

d、定义选取文件上传到oss的方法

uploadFile(event){let file = event.target.files[0]if(!(/^\S+\.mp4$/.test(file.name))){return this.$message.error('请上传视频文件')}/*** 文件的类型,判断是否是视频*/let param = new FormData()param.append('file', file, file.name);console.log('开始上传')this.put(file.name,file)
},

e、定义put方法上传到阿里云

async put (name,file) {try {var fileName = new Date().getTime()+name;//object-name可以自定义为文件名(例如file.txt)或目录(例如abc/test/file.txt)的形式,实现将文件上传至当前Bucket或Bucket下的指定目录。let result = await this.client.put(fileName, file);this.video_url=result.url;//返回的上传视频地址//一下为生成图片处理的签名 URL t_1000表示第一秒视频图片,常用来作为视频封面图const imgRes = this.video_url+'?x-oss-process=video/snapshot,t_1000,f_jpg,w_0,h_0,m_fast';      } catch (e) {          console.log(e);}
},

可能遇到的问题:
1、跨域不能上传成功:
跨域不能上传成功里插入图片描述
去阿里云配置域名,上传服务器验证

uni-app中使用(需要后端配合一下)

1、data定义数据

data() {return {ossData:{accessid: "",dir: "/uploads/202003/",expire: 1585653811,host: "",policy: "",signature: ""},fileInfo:null,}
},

2、定义选择要上传的视频文件方法

selVideo(type){uni.chooseVideo({count: 1,maxDuration:15,compressed:false,success: (res) => {if(parseFloat(res.duration)>=16){return this.$toast('请选取小于15s的视频!')}let tempFilePath = res.tempFilePath;this.fileInfo=res;if(!this.fileInfo){return}uni.showLoading({title:'上传中...'})this.getOssSign(res.tempFilePath)	}							});
},

3、定义获取服务器端返回oss配置方法

async getOssSign(path,type){let [e, data] = await this.$api.getOssSign();if (e) returnif (data.errNum === 200) {										this.ossData=data.result;	let fileName=new Date().getTime()+'app'+this.fileInfo.tempFilePath.substr(this.fileInfo.tempFilePath.length-6,)uni.uploadFile({url: this.ossData.host,  //后台给的阿里云存储给的上传地址filePath: path,  fileType: 'video',name: 'file',formData: {key: fileName,  //文件名policy: this.ossData.policy,  //后台获取超时时间OSSAccessKeyId: this.ossData.accessid, //后台获取临时IDsuccess_action_status: '200', //让服务端返回200,不然,默认会返回204signature: this.ossData.signature //后台获取签名},success: (res) => {console.log(res,fileName);uni.hideLoading();uni.showToast({title: '上传成功',icon: 'success',duration: 1000});this.video=this.ossData.host+'/'+fileName;		},fail: (err) => {uni.hideLoading();uni.showModal({title: '上传失败',content: err.errMsg,showCancel: false});},complete:(com) => {console.log(com)}});				}else{this.$toast(data.errMsg);}
},

http://www.ppmy.cn/news/1007909.html

相关文章

前端系统使用iframe下载文件

需求描述 前端调用后端的接口,获取到文件的路径,并下载。 碰到的问题 页面组件存在与云端的组件库,使用window.open()无法满足需求(在当前页面下载),因为路径是跨域的,所以决定使用iframe的方…

__attribute__((noreturn))

GNU C 的一大特色就是__attribute__ 机制,__attribute__ 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。 语法格式为: __attribute__((att…

并查集练习—省份数量

上一篇中讲了并查集及其原理,在这篇文章中简单应用一下。如果对并查集不是很了解强烈建议先看上一篇。 题目: 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相…

三数之和 LeetCode热题100

题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 …

设计模式——面向对象的7大设计原则

1.单一职责原则 一个类中最好只放一种类型的方法,比如Dao中只有和数据库交互相关的代码。实现高内聚,低耦合。 2.开闭原则 对外拓展开放,对内修改关闭,有新的需求时不要修改已有代码,而是添加新的代码,比…

合宙Air724UG LuatOS-Air script lib API--ntp

ntp Table of Contents ntp ntp.timeSync(period, fnc, fun) ntp 模块功能:网络授时. 重要提醒!!!!!! 本功能模块采用多个免费公共的NTP服务器来同步时间 并不能保证任何时间任何地点都能百分…

分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现WOA鲸鱼算法同步优化特征选择结合支持向量机分类预测…

关于HIVE的分区与分桶

1.分区 1.概念 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录,每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区,这样的查询效率会提高很多 个人理解白话:按表中或者自定义的一个列,对数据进…