您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-30
后台-插件-广告管理-内容页头部广告(手机)

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

npm install --save minio-js

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

import { Minio } from "minio-js";

3、创建一个minio的客户端

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

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

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

  1. function uploadByUrl(url, data) {
  2. loadding.value = true;
  3. return fetch(url, {
  4. mode: "cors", // 解决跨域
  5. headers: {
  6. Accept: "application/json,text/plain,/",
  7. },
  8. method: "PUT",
  9. body: data,//data就是文件对象
  10. }).then((response) => {
  11. if (response.ok) {
  12. // 处理成功的情况
  13. loadding.value = false;
  14. proxy.$modal.msgSuccess("上传成功");
  15. } else {
  16. // 处理失败的情况
  17. proxy.$refs["my-upload"].clearFiles();
  18. throw new Error("上传失败,请重新上传!");
  19. }
  20. });
  21. }
  22. //获取上传的URL
  23. minioClient.presignedPutObject(
  24. bucketName,//桶名称
  25. fileName,//文件名称
  26. 1000 * 60 * 5,//URL有效期
  27. function (err, presignedUrl) {//错误的回调方法
  28. if (err) return console.log(err);
  29. let url = presignedUrl;
  30. uploadByUrl(url, fileObj.value);
  31. }
  32. );

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索