elementui的el-upload图片上传到服务器的对象储存cos并且展示出来

目录

  • 0.前提
  • 1.准备工作
    • 1.买一个腾讯云服务器(你可以买其他的),我这里是去买了61元一年的轻量级应用云服务器,操场系统是宝塔Linux
    • 2.买一个对象储存cos(这里腾讯云可以不用购买,因为开通的时候可以有180天的免费的50g容量储存,不过没有免费流量(不过很便宜的流量计算)所以说如果你只是做一个小东西玩一玩,不用专门购买资源包)
    • 3.创建并且设置储存桶
  • 2.编写代码
  • 3.验证


👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!


0.前提

在我做社区管理类小程序时,我编写后台管理端,技术是vue2+elementui嘛,然后我需要加一个图片上传的功能,用到了Upload组件,发现需要有一个必填的参数(action 必选参数,上传的地址 string),这样子就需要配置一个服务器的地址,看到网上主要的参考资料都说搞一个服务器的对象储存,因此我也去搞了搞,并且打算把这个图片上传的实现流程记录一下。

1.准备工作

1.买一个腾讯云服务器(你可以买其他的),我这里是去买了61元一年的轻量级应用云服务器,操场系统是宝塔Linux

2.买一个对象储存cos(这里腾讯云可以不用购买,因为开通的时候可以有180天的免费的50g容量储存,不过没有免费流量(不过很便宜的流量计算)所以说如果你只是做一个小东西玩一玩,不用专门购买资源包)

3.创建并且设置储存桶

在这里插入图片描述
这里我只是做简单的图片上传所以不勾选高级设置
在这里插入图片描述
点击创建之后就完成了
在这里插入图片描述
在这里插入图片描述
配置跨域的

在这里插入图片描述
找到服务器的api密钥管理新建一个密钥
在这里插入图片描述

2.编写代码

首先要下载导入一个包(这个包是为了和腾讯云的建立连接)
npm install cos-js-sdk-v5
然后在需要图片上传功能的页面的js里面导入这个包并且设置key(注意这里是为了调试方便所以将这个密钥放在前端,实际项目运行的时候需要放到后端里面去的)

import COS from 'cos-js-sdk-v5'; // 引入 COS 对象存储工具库
const cos = new COS({SecretId: 'xxxxxxxxxxxx', // 替换为你的密钥IDSecretKey:'xxxxxxxxxxxx', // 替换为你的密钥密码
});

然后加入这个页面上传的功能样式,其中action的值必定是#、 http-request的值是自定义的方法,file-list的值是你保存图片元素的数组, list-type的值是选择了图片卡,另外4个也是方法看js代码,还有加一个预览的图片弹窗

<el-uploadaction="#":http-request="httpRequest"list-type="picture-card":file-list="fileList":on-preview="onPreview":on-remove="onRemove":on-change="onChange":before-upload="beforeUpload"><i class="el-icon-plus" /><!-- 加号图标,用于触发文件选择 --></el-upload>
<!-- el-dialog 用于预览图片 -->
<el-dialog title="预览" :visible="isShowDialog" @close="isShowDialog = false"><el-row type="flex" justify="center"><img :src="previewImg" alt="" /></el-row>
</el-dialog>

data的元素:

  isShowDialog: false, // 是否显示预览弹窗previewImg: '', // 预览图片的URLfileList: [] // 保存已上传文件的列表

jmethod里的方法

 // 预览已上传的文件onPreview(file) {this.previewImg = file.url;this.isShowDialog = true;},// 删除文件时触发的方法onRemove(file, newFileList) {this.fileList = newFileList;},// 文件上传成功/失败都会触发的方法onChange(file, newFileList) {this.fileList = newFileList; // 更新文件列表},// 上传文件前的钩子,用于校验文件格式和大小beforeUpload(file) {const typeList = ['image/jpeg', 'image/png', 'image/gif'];if (!typeList.includes(file.type)) {this.$message.error('目前只支持 jpg/png/gif 图片格式');return false;}const maxSize = 5 * 1024 * 1024; // 5MBif (file.size > maxSize) {this.$message.error('图片大小不能超过 5M');return false;}},// 自定义上传行为,替换默认的上传路径httpRequest(params) {cos.putObject({Bucket: 'yun-1324857569', // 替换为你的存储桶名称Region: 'ap-guangzhou', // 替换为你的存储桶所在地域Key: params.file.name, // 对象键,即存储在桶里的文件名StorageClass: 'STANDARD',Body: params.file},(err, data) => {if (err) {this.$message.error('图片上传失败');} else {this.fileList[0].url = 'http://' + data.Location; // 拼接图片URLthis.fileList[0].status = 'success'; // 标记上传状态为成功}});}

3.验证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Linux 之八:Linux 的 Shell 编程

简介 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服务 Shell 脚本 S…

云原生应用架构-微服务开发最佳实践

第1章云原生时代下的微服务 微服务架构是一种将单个应用程序开发为一组小型服务的方法&#xff0c;每个服务在自己的进程中运行&#xff0c;并通过轻量级的通信机制&#xff08;如HTTP API&#xff09;进行交互。这些服务围绕业务功能构建&#xff0c;可以通过完全自动化的部署…

单链表的基本操作--增删改查

增删改查 #include <stdio.h> #include <stdlib.h>#define OK 1 #define ERROR 0 typedef int Status; typedef char ElemType;typedef struct Lnode {ElemType data; //结点的数据域struct Lnode* next; //节点的指针域 }Lnode,*LinkList;初始化 Status InitLis…

【PCL】(二十八)超体素聚类分割点云

&#xff08;二十九&#xff09;超体素聚类分割点云 论文&#xff1a;Voxel Cloud Connectivity Segmentation - Supervoxels for Point Clouds supervoxel_clustering.cpp #include <pcl/console/parse.h> #include <pcl/point_cloud.h> #include <pcl/poin…

重启 explorer 进程的正确做法(二)

重启资源管理器进程的方法不唯一&#xff0c;但长期以来大家对实施方法用的不到位。 在上一篇中我认为&#xff1a;“我们往往使用 TerminateProcess 并传入 PID 和特殊结束代码 1 或者 taskkill /f /im 等方法重启资源管理器( explorer.exe )&#xff0c;其实这是不正确的。我…

21 卷积层里的多输入多输出通道【李沐动手学深度学习v2课程笔记】

目录 1. 多输入输出通道&相应代码实现 1.1 多输入 1.2 多输出 1.3 1x1 卷积层 1.4 小结 1. 多输入输出通道&相应代码实现 1.1 多输入 为了加深理解&#xff0c;我们实现一下多输入通道互相关运算。 简而言之&#xff0c;我们所做的就是对每个通道执行互相关操作&a…

CentOS 8启动流程

一、BIOS与UEFI BIOS Basic Input Output System的缩写&#xff0c;翻译过来就是“基本输入输出系统”&#xff0c;是一种业界标准的固件接口&#xff0c;第一次出现在1975年&#xff0c;是计算机启动时加载的第一个程序&#xff0c;主要功能是检测和设置计算机硬件&#xff…

题目:泡澡(蓝桥OJ 3898)

问题描述&#xff1a; 解题思路&#xff1a; 图解&#xff1a;&#xff08;以题目样例为例子&#xff09; 注意点&#xff1a;题目的W是每分钟最大出水量&#xff0c;因此有一分钟的用水量大于出水量则不通过。 补充&#xff1a;差分一般用于对一段区间每个元素加相同值&#x…

JZ76 删除链表中重复的结点

/*public class ListNode {int val;ListNode next null;ListNode(int val) {this.val val;} } */import java.util.*; public class Solution {public ListNode deleteDuplication(ListNode pHead) {//初步想想法&#xff1a; 弄一个hashmap 然后进行key存储起来。然后 如果存…

PHP将PDF转成多个PNG文件

1. 安装Imagick之前&#xff0c;您需要确保已安装PHP。如果您尚未安装PHP&#xff0c;请运行以下命令安装PHP及其常用扩展&#xff1a; sudo apt install php php-cli php-imagick 2. 安装Imagick PHP扩展&#xff1a; sudo apt install php-imagick 3.安装后&#xff0c;您…

python 查询json文件的某一行并 替换json 键值字符串右边的内容

在Python中处理JSON文件时&#xff0c;通常不需要按照行来查询和替换内容&#xff0c;因为JSON数据结构是键值对组成的&#xff0c;并且不以“行”为单位。你可以直接读取整个JSON文件&#xff0c;解析成字典对象&#xff0c;然后根据键名查找并修改对应的值。 以下是一个示例…

hibernate查询时会无限循环,然后报错:Exception in thread “main“ java.lang.StackOverflowError

遇到的情况有&#xff1a; 1、建表对应的时候“意外”添加了索引。解决&#xff1a;需要把索引删掉 2、打印查询到的单个实体信息时&#xff0c;使用了toString()方法。解决&#xff1a;不用就行了 3、多对多映射&#xff0c;查询到的整个实体集合时&#xff0c;直接打印这个…

web前端框架

目前比较火热的几门框架: React React是由Facebook(脸书)开发和创建的开源框架。React 用于开发丰富的用户界面&#xff0c;特别是当您需要构建单页应用程序时。它是最强大的前端框架。 弊端: 您不具备 JavaScript 的实践知识&#xff0c;则建议不要使用 React。同样&#x…

2024 年广东省职业院校技能大赛(高职组) “云计算应用”赛项样题①

2024 年广东省职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项样题① 模块一 私有云&#xff08;50 分&#xff09;任务 1 私有云服务搭建&#xff08;10 分&#xff09;任务 2 私有云服务运维&#xff08;25 分&#xff09;任务 3 私有云运维开发&#xf…

人工智能(AI)领域最流行的八大算法概括

人工智能&#xff08;AI&#xff09;领域最流行的八大算法概括&#xff01; 1. 卷积神经网络&#xff08;CNN&#xff0c;Convolutional Neural Network&#xff09; 2. 图神经网络&#xff08;GNN&#xff0c;Graph Neural Network&#xff09; 3. 循环神经网络&#xff08;RN…

蓝桥杯第一天

这题就是典型的位数贡献大于数量贡献&#xff0c; 1花的火柴更少&#xff0c;所以尽量用完10个1&#xff0c;然后其实就是简单的背包问题尽量拿最多的物品&#xff08;数字&#xff09;&#xff0c;限重为300&#xff0c;各物品&#xff08;数字&#xff09;的重量即为所需火柴…

vue2的常用指令

什么是vue的内置指令 内置指令的一些新颖而有吸引力的用法&#xff0c;可以让您在开发中能加速开发效率,降低维护成本。 v-bind和v-model v-bind&#xff1a; 使用 v-bind 可以动态地绑定一个或多个特性&#xff0c;或者一个组件 prop 到表达式。可以使用简化语法 : 来代替 …

php文件操作

一、文件读取的5种方法 1&#xff0c;file_get_contents: 将整个文件读入一个字符串 file_get_contents( string $filename, bool $use_include_path false, ?resource $context null, int $offset 0, ?int $length null ): string|false 可以读取本地的文件也可以用来打…

Python语言元素之变量

程序是指令的集合&#xff0c;写程序就是用指令控制计算机做我们想让它做的事情。那么&#xff0c;为什么要用Python语言来写程序呢&#xff1f;因为Python语言简单优雅&#xff0c;相比C、C、Java这样的编程语言&#xff0c;Python对初学者更加友好。 一、一些计算机常识 在…

【Apache的安装与目录结构】讲解

Apache的安装与目录结构 0. 前言1. 安装Apache1.1 在Ubuntu/Debian上安装Apache1.2 在CentOS/Red Hat/Fedora上安装Apache1.3 在Windows上安装Apache1.4 在Mac OS X上安装Apache 2. Apache目录结构 0. 前言 Apache HTTP Server&#xff0c;简称Apache&#xff0c;是一个开源的…