纯前端使用Vue3上传文件到minio文件服务器,粘贴直接可用
admin 阅读: 2024-03-30
后台-插件-广告管理-内容页头部广告(手机) |
1、首先安装minio的插件,因为我使用的vue3,不支持模块化的导入,所以我们使用一个别人写好的vue2的包
npm install --save minio-js2、在需要上传文件的页面导入这个包
import { Minio } from "minio-js";3、创建一个minio的客户端
- minioClient = new Minio.Client({
- endPoint: '192.168.1.111', // minio的ip,直接替换自己的即可
- port: 9000, // 端口号,若地址为类似test.minio.com,就不必写端口号
- useSSL: false, // 是否使用ssl
- accessKey: accessKey, // 登录的accessKey
- secretKey: secretKey,
- sessionToken: token,
- });
这里说明一下,accessKey、secretKey、sessionToken都是通过接口获取到的临时凭证
4、通过带预签名的url上传,首先我们需要获取到这个url,minioAPI提供了, minioClient.presignedPutObject可以获取带签名的URL
- function uploadByUrl(url, data) {
- loadding.value = true;
- return fetch(url, {
- mode: "cors", // 解决跨域
- headers: {
- Accept: "application/json,text/plain,/",
- },
- method: "PUT",
- body: data,//data就是文件对象
- }).then((response) => {
- if (response.ok) {
- // 处理成功的情况
- loadding.value = false;
- proxy.$modal.msgSuccess("上传成功");
- } else {
- // 处理失败的情况
- proxy.$refs["my-upload"].clearFiles();
- throw new Error("上传失败,请重新上传!");
- }
- });
- }
- //获取上传的URL
- minioClient.presignedPutObject(
- bucketName,//桶名称
- fileName,//文件名称
- 1000 * 60 * 5,//URL有效期
- function (err, presignedUrl) {//错误的回调方法
- if (err) return console.log(err);
- let url = presignedUrl;
- uploadByUrl(url, fileObj.value);
- }
- );
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |