当前位置: 首页 > news >正文

vue2、vue3实现用aws s3协议操作minio进行文件存储和读取

亚马逊s3 API文档

最开始安装了@aws-sdk/client-s3,但是不知道为什么一直报错,所以用了aws-sdk

准备工作:

需要已经搭建好minio、创建好桶

1. vue2

安装插件

yarn add aws-sdk 

s3配置

var AWS = require("aws-sdk");
AWS.config.update({accessKeyId: accessKeyId,secretAccessKey: secretAccessKey,endpoint: `http://${minio的ip地址}:${minio的端口}`,s3ForcePathStyle: true, // 如果使用 MinIO,请设置为truesignatureVersion: "v4",
});
let s3 = new AWS.S3({apiVersion: "2006-03-01",
});

封装上传文件函数 utils/minio.js中

// 上传文件
export const uploadFile = (bucketName, fileName, file, type, size) => {return new Promise((reslove, reject) => {s3.putObject({Bucket: bucketName,Key: fileName,Body: file,ACL: 'public-read',ContentType: type,ContentLength: size},(err, data) => {if (err) {console.log(err);// 上传失败} else if (data) {console.log(data);reslove(data.Location);}});});
};

注意: ContentType 必传 不传的话上传到minio中的文件无法进行在线预览。

调用

import { uploadFile } from "@/utils/minio.js";uploadS3File(bucketName,fileName,file,mineType,fileSize).then((location) => {// location为minio中etag的值 若返回location则为上传成功
})

2. vue3 + vite

vue3中与vue2中的使用方法基本相同,不同的是插件的引用。

1.vue3中无法使用require所以采用import引入

import AWS from 'aws-sdk'

2.可能会报错globel不存在

创建pollyfill.js文件, 内容如下

if (typeof window.global === "undefined") {window.global = window;
}

3.在main.js中引入(注意放在createApp之前)

import '@/utils/pollyfill'
import { createApp } from "vue";

4.在index.html中加入

<script>glboal = globalThis</script>

即可引入成功

相关文章:

  • 机器视觉系统选型-特征重复性
  • ubuntu22.04 下载路径
  • Upload-Labs-Linux
  • linux:下载、网络请求、端口
  • 查看docker映射数据卷
  • 3分钟了解安全数据交换系统有什么用!
  • 【效率工具】利用python进行本地知识库(PDF和WORK文件内容)的批量模糊搜索
  • 深入理解pytest.ini文件的配置与使用
  • Ref和类型断言
  • 移动应用开发框架概览:细节深入,全面解析
  • 油烟净化器如何做到高效净化?科技力量,清新餐饮生活
  • MySQL5.7的几种安装方式总结(排错踩坑呕心沥血的经历)
  • C# WPF上位机开发(从demo编写到项目开发)
  • 第二百二十八回
  • Text2SQL学习整理(五)将Text-to-SQL任务与基本语言模型结合
  •  D - 粉碎叛乱F - 其他起义
  • javascript从右向左截取指定位数字符的3种方法
  • JavaScript设计模式系列一:工厂模式
  • node学习系列之简单文件上传
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 从零开始的无人驾驶 1
  • 第2章 网络文档
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • ${ }的特别功能
  • (007)XHTML文档之标题——h1~h6
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (python)数据结构---字典
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (原創) 物件導向與老子思想 (OO)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Core 通过 Ef Core 操作 Mysql
  • .Net Core与存储过程(一)
  • .net wcf memory gates checking failed
  • .net反编译的九款神器
  • .NET值类型变量“活”在哪?
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @RequestBody与@ResponseBody的使用
  • @synthesize和@dynamic分别有什么作用?
  • @WebServiceClient注解,wsdlLocation 可配置
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [8-27]正则表达式、扩展表达式以及相关实战
  • [ASP.NET MVC]Ajax与CustomErrors的尴尬
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [codevs 1296] 营业额统计
  • [HTML]Web前端开发技术28(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [JavaWeb]—前端篇
  • [NCTF 2022] web题解