纯前端使用Vue3上传文件到minio文件服务器,粘贴直接可用

1、首先安装minio的插件,因为我使用的vue3,不支持模块化的导入,所以我们使用一个别人写好的vue2的包

npm install --save minio-js    

2、在需要上传文件的页面导入这个包

import { Minio } from "minio-js";

3、创建一个minio的客户端

 minioClient = new Minio.Client({
      endPoint: '192.168.1.111', // minio的ip,直接替换自己的即可
      port: 9000, // 端口号,若地址为类似test.minio.***,就不必写端口号
      useSSL: false, // 是否使用ssl
      a***essKey: a***essKey, // 登录的a***essKey
      secretKey: secretKey,
      sessionToken: token,
    });

这里说明一下,a***essKey、secretKey、sessionToken都是通过接口获取到的临时凭证

4、通过带预签名的url上传,首先我们需要获取到这个url,minioAPI提供了, minioClient.presignedPutObject可以获取带签名的URL

function uploadByUrl(url, data) {
  loadding.value = true;
  return fetch(url, {
    mode: "cors", // 解决跨域
    headers: {
      A***ept: "application/json,text/plain,/",
    },
    method: "PUT",
    body: data,//data就是文件对象
  }).then((response) => {
    if (response.ok) {
      // 处理成功的情况
      loadding.value = false;
      proxy.$modal.msgSu***ess("上传成功");
    } 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);
    }
  );

转载请说明出处内容投诉
CSS教程_站长资源网 » 纯前端使用Vue3上传文件到minio文件服务器,粘贴直接可用

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买