vue前端上传图片到阿里云OSS,超详细上传图片与视频教程

vue前端直传图片与视频到阿里云OSS

    • 1. 简介与日常使用
    • 2. 为什么要这么干?是因为我司后端不行吗???(确实!)
    • 3. vue前端直传的操作
    • 4. 如何上传到阿里OSS指定文件夹呢?

在这里插入图片描述

1. 简介与日常使用

  • 阿里云OSS是一款由阿里巴巴云计算有限公司开发的基于云端的对象存储服务。它为企业和个人存储海量数据提供了完美的解决方案。
  • 简单来说就是一台服务器,可以把静态资源放进去存储,比如图片,视频,各种库,然后会给你一个链接,访问数据。
  • 日常使用的话,一般用这个工具,很方便,要存什么东西,直接拖进去就行。
  • 选择对应资源,右键便可以看到信息 => 链接啥的,详细信息。
    在这里插入图片描述

2. 为什么要这么干?是因为我司后端不行吗???(确实!)

  • 这种场景是提供给用户使用的,他们在各种系统里面,点击上传图片的操作,我们需要让文件直接传入阿里oss服务器。
  • 总不能给每个用户都提供一个OSS工具吧,怕麻烦,也怕骂娘。
  • 其实后端也能做,文件通过接口传入后端,他们来操作,那只怕是展示不了咱们前端的牛逼了
  • 再说一句:咱前端天下第一!!!
    在这里插入图片描述

3. vue前端直传的操作

  • 安装依赖 —— npm方式
npm install ali-oss
  • 或者 —— yarn方式
yarn add ali-oss
  • 如果很多地方都会用到,那么你可以封装到全局中去,比如这样:
    在这里插入图片描述
const OSS = require('ali-oss');const client = new OSS({// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。region: 'yourregion',// 从环境变量中获取访问凭证// 当然,以下两个也可以直接写死accessKeyId: process.env.OSS_ACCESS_KEY_ID,accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,// 填写Bucket名称。bucket: 'examplebucket'
});
  • 常用的就这么四个参数,如果你要更多,可以看文档
    在这里插入图片描述

  • 上面的参数如果不知道,问运维或者后端就行,一般是他们去处理,咱不干这破事。

  • 接下来就是哪里用到,哪里引入就行。你的文件路径肯定跟我的不一样,别乱来啊,兄弟!

import { client } from "@/utils/alioss.js";
  • template 部分,这里没啥特别,用element ui的就行
 <el-uploadclass="avatar-uploader":on-preview="handlePictureCardPreview":action="''":http-request="UploadFileFn":on-success="handleSuccess":on-error="handleError":on-change="fileChange":accept="'.img,.png,.jpg,.jpeg'":data="uploadImgData"multiple></el-upload>
  • 需要注意的是,action置为空,使用 http-request。
  • on-success 是不会触发的。
  • js 部分
UploadFileFn(file) {// 定义文件名 用时间戳,保证唯一性let fileName = 'demo' + `${Date.parse(new Date())}`+'.jpg'; client().multipartUpload(fileName, file.file).then((res) => {// 这里会返回信息// 如果返回了地址,而且能在浏览器打开看到文件就是ok了console.log(res)// 做你想做的事情,比如页面回显// 或者获取其他信息,名字等等this.imageUrl = res.url;})
}

4. 如何上传到阿里OSS指定文件夹呢?

  • 这里提供另一种写法,顺便封装一下,因为上传视频和上传图片都会用到。
   UploadFilePublic(file, type, suffix) {// type用来判断 是图片还是视频// suffix是后缀名let fileName = "adver" + `${Date.parse(new Date())}` + suffix;let client = new OSS({region: "oss-cn-xxx",accessKeyId: "xxx",accessKeySecret: "xxx",bucket: "xxx",});try {// 上传文件到指定文件夹const result = client.put("material/" + fileName, file.file);result.then((res, cal) => {console.log(res);this.$message.success("上传成功");// 这里是获取一些参数,顺便提供案例// 不要的去掉即可let obj = {// fileDuration: 0,fileName: fileName,filePath: res.url,fileSize: file.file.size,// 后缀名fileSuffix: res.name.match(/.[^.]+$/)[0],fileSignature: type == 'img' ? this.imgMd5 : this.videoMd5};// 图片上传if (type == "img") {// 做你想做的其他事情this.imageUrl = res.url;}// 视频上传if (type == "video") {// 做你想做的其他事情this.videoUrl = res.url;}});} catch (e) {console.error("上传失败:", e);}},
  • 推送到指定文件夹:
  • 没有这个文件夹会自行创建,若怕出错可以先在阿里OSS工具上先创建好此文件夹。
const result = client.put("material/" + fileName, file.file);

感谢大家的支持,最近尽量多更新一点,也希望大家能鼓励鼓励!

1. 希望本文能对大家有所帮助,如有错误,敬请指出

2. 原创不易,还请各位客官动动发财的小手支持一波(关注、评论、点赞、收藏)
3. 拜谢各位!后续将继续奉献优质好文
4. 如果存在疑问,可以私信我(主页有Q)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/296621.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5实现最智能大气的公司年会抽奖(源码)

文章目录 1.设计来源1.1 主界面1.3 数据配置1.4 抽奖效果1.5 中奖效果 2.效果和源码配置2.1 动态效果2.2 员工信息配置2.3 奖品信息配置2.4 抽奖音效配置2.5 源代码2.6 项目结构 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/…

Python字符串处理全攻略(三):常用内置方法轻松掌握

目录 引言Python字符串常用内置方法str.index()功能介绍语法注意事项总结 str.startswith()功能介绍语法示例注意事项 str.expandtabs()功能介绍语法示例注意事项总结 str.splitlines()功能介绍语法示例注意事项总结 str.swapcase()功能介绍语法示例注意事项 结束语 引言 欢迎…

Python数据分析 Matplotlib篇 基本方法初识 (第1讲)

Python数据分析 Matplotlib篇(第1讲)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

《每天一分钟学习C语言·八》字符串,指针与二维数组,补码,按位取反

1、 枚举 enum WeekDay //这是一个数据类型 {//MonDay, TusDay,.... }; enum WeekDay day MonDay; printf(“%d\n”, day); //输出0&#xff0c;枚举里面元素都是从0开始排列2、 字符串 &#xff08;1&#xff09;在字符串中加双引号前面需要有反斜杠 &#xff08;2&#xf…

深入探讨多模态模型和计算机视觉

近年来&#xff0c;机器学习领域在从图像识别到自然语言处理的不同问题类型上取得了显着进展。然而&#xff0c;这些模型中的大多数都对来自单一模态的数据进行操作&#xff0c;例如图像、文本或语音。相比之下&#xff0c;现实世界的数据通常来自多种模态&#xff0c;例如图像…

string的库函数reserve、resize

系列文章 http://t.csdnimg.cn/u80hL 目录 系列文章[TOC](目录) 一、reserve——请求容量的变化二、resize——操作对象使用的空间 一、reserve——请求容量的变化 改变对象的capacity——他会请求开辟和缩小对象所占的空间&#xff0c;reserve只能操作对象未使用的空间&…

vue的表单收集案例

Vue的表单收集案例 这只是最基础的表单收集&#xff0c;并未涉及到element-ui。 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>收集表单数据</title><script type"text/javascript" src"../js…

美好的⼀天 从ActionTab开始 美观、智能、⾼效的新标签⻚ iTab 新标签页iTab新标签页Atop100工具推荐

文章目录 ActionTabiTab 新标签页iTab新标签页&#xff0c;小组件&#xff0c;起始页&#xff0c;标签页&#xff0c;日历&#xff0c;股票&#xff0c;浏览器扩展 https://www.actiontab.cn/ ActionTab 收费&#xff1f;&#xff1f;&#xff1f;&#xff1f; iTab 新标签页iT…

docker-compaose部署openldap

前段时间在本地搭建了一套gitlab geo测试环境&#xff0c;因为需要集成ldap&#xff0c;所以特意搭建下&#xff0c;特此作为笔记记录下。 文章目录 1. 前置条件2. 编写docker-openldap.yml文件3. 登录4. 使用创建组创建用户登录测试 1. 前置条件 安装docker-compose 安装docke…

嵌入式-stm32-用PWM点亮LED实现呼吸灯

一&#xff1a;知识前置 1.1、LED灯怎么才能亮&#xff1f; 答&#xff1a;LED需要低电平才能亮&#xff0c;高电平是灯灭。 1.2、LED灯为什么可以越来越亮&#xff0c;越来越暗&#xff1f; 答&#xff1a;这是用到不同占空比来实现的&#xff0c;控制LED实现呼吸灯&…

1.倒排索引 2.逻辑斯提回归算法

1.倒排索引 https://help.aliyun.com/zh/open-search/retrieval-engine-edition/introduction-to-inverted-indexes 倒排索引&#xff08;Inverted Index&#xff09;是一种数据结构&#xff0c;用于快速查找包含某个特定词或词语的文档。它主要用于全文搜索引擎等应用&#…

计算机图形学理论(3):着色器编程

本系列根据国外一个图形小哥的讲解为本&#xff0c;整合互联网的一些资料&#xff0c;结合自己的一些理解。 CPU vs GPU CPU支持&#xff1a; 快速缓存分支适应性高性能 GPU支持&#xff1a; 多个 ALU快速板载内存并行任务的高吞吐量&#xff08;在每个片段、顶点上执行着色…