vue中使用MINIO将文件上传到指定的bucket库中(vue2和vue3)

2023-10-27

步骤

MINIO官网: https://docs.min.io/docs/javascript-client-quickstart-guide.html

  1. 下载minio

npm install --save minio

  1. 将minio集成到js中
    在集成的时候vue2和vue3是不同的方式

    vue2

    1、初始化minio客户端
    下面代码中的用户id和用户密码生成的办法

    var Minio = require('minio')
    var minioClient = new Minio.Client({
    	endPoint: 'xxxxx',//存放桶的服务器的URL,如:192.168.5.225
    	port: 9000,//TCP/IP 端口号,此输入是可选的,HTTP默认为80 ,HTTPs的默认值设置为443
        useSSL: false,//将此值设置为“true”为HTTPS访问,false为普通http访问
        accessKey: 'colourful',//用户 ID
        secretKey: 'ccy667714'//用户密码
    });
    

    2、使用客户端对象将文件上传到指定的bucket

    //putObject参数 按次序来
    //1、存储桶的名称
    //2、对象的名称(文件存到bucket中的名称)
    //3、流对象(可读的stream流、Buffer、string字符串)
    //4、将写入对象数据的本地文件系统上的路径(可为null)
    //5、文件大小(可为null)
    //6、发生错误时调用回调err
    minioClient.putObject('europetrip2', f.name, buf, null, f.size, function (err: any, data: any) {
    	if (err)
           console.log(err)
        else
           console.log("Successfully uploaded data to testbucket/testobject");
    });
    

    3、放上全部代码
    此段代码可以直接放置app.vue中运行
    大致逻辑是,点击上传文件按钮,选中文件,系统将文件上传到指定的bucket中

    <template>
      <div id="nav">
        <p>上传文件:</p>
        <input ref="input" type="file" id="uploader" @change="handleFiles">
        <!-- <button @click="add">点击创建桶并上传文件</button> -->
        <!-- <img src="./assets/logo.png" alt=""> -->
      </div>
      <!-- <router-view /> -->
    </template>
    
    <script >
    export default {
      methods: {
    
        handleFiles(event) {
          var f = event.target.files[0]
          let reader = new FileReader();
          reader.readAsArrayBuffer(f);
          reader.onload = function (e) {
            
              let res = e.target.result;//ArrayBuffer
              let buf = Buffer.from(res);//Buffer
              var Minio = require('minio')
              var minioClient = new Minio.Client({
                endPoint: '66.150.67.162',
                port: 9000,
                useSSL: false,
                accessKey: 'xxx',
                secretKey: 'xxx'
              });
              minioClient.putObject('europetrip2', f.name, buf, null, f.size, function (err, data) {
                if (err)
                  console.log(err)
                else
                  console.log("Successfully uploaded data to testbucket/testobject");
              });
            
          }
        }
      }
    }
    </script>
    

    vue3
    先放上例子

    <template>
      <div id="nav">
        <p>上传文件:</p>
        <input ref="input" type="file" id="uploader" @change="handleFiles">
      </div>
      <!-- <router-view /> -->
    </template>
    
    <script lang="ts">
    export default {
      methods: {
    
        handleFiles(event: any) {
          var f = event.target.files[0]
          let reader = new FileReader();
          reader.readAsArrayBuffer(f);
          reader.onload = function (e: any) {
            
              let res = e.target.result;//ArrayBuffer
              let buf = Buffer.from(res);//Buffer
              var Minio = require('minio')
              var minioClient = new Minio.Client({
                endPoint: '66.150.67.162',
                port: 9000,
                useSSL: false,
                accessKey: 'xxx',
                secretKey: 'xxx'
              });
              minioClient.putObject('europetrip2', f.name, buf, null, f.size, function (err: any, data: any) {
                if (err)
                  console.log(err)
                else
                  console.log("Successfully uploaded data to testbucket/testobject");
              });
            
          }
        }
    
    
      }
    }
    </script>
    

    大致的意思跟vue2的方式差不多,一样放到app.vue中,但是Buffer可能会报错
    解决办法:
    1、下载node

    npm i --save-dev @types/node

    2、将node设置到tsconfig.json中

    在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue中使用MINIO将文件上传到指定的bucket库中(vue2和vue3) 的相关文章

随机推荐

  • 遍历指定目录获取当前目录下指定后缀(如txt和ini)的文件名

    bin bash 遍历指定目录获取当前目录下指定后缀 如txt和ini 的文件名
  • LabVIEW通过以太网(TCP)与S7-1200 PLC通信

    LabVIEW通过以太网 TCP 与S7 1200 PLC通信 laiping 20170901 摘要 本文介绍LabView采用以太网 TCP 方式与西门子S7 1200PLC通讯 关键字 LabView S7 1200 TCP PLC
  • python 调用 R,使用rpy2

    python 与 R 是当今数据分析的两大主流语言 作为一个统计系的学生 我最早接触的是R 后来才接触的python python是通用编程语言 科学计算 数据分析是其重要的组成部分 但并非全部 而R则更偏重于统计分析 毕竟R是统计学家发明
  • Qt 中设置窗体(QWidget)透明度的几种方法

    Qt 中设置窗体 QWidget 透明度的几种方法 1 设置窗体的背景色 在构造函数里添加代码 需要添加头文件qpalette或qgui QPalette pal palette pal setColor QPalette Backgrou
  • 【注意力模型】Harmonious Attention Network for Person Re-Identification

    文章目录 Abstract 1 Introduction 2 Related Work 3 Harmonious Attention Network 3 1 Harmonious Attention Learning 4 Experimen
  • Python循环结构——while

    While是循环结构中重要的一个部分 基本使用格式 while 循环条件 条件成功之后的子代码 代码执行时会先判断条件 条件成功之后再执行子代码 否则直接跳过到下一个同等级代码 count 0 count 1 count 1 count 1
  • pptp 防火墙设置

    服务搭建成功 但是dns老是出问题 找了很多文档 最后找到了防火墙设置规则 sbin iptables t nat A POSTROUTING o eth0 s 172 16 0 0 16 j MASQUERADE sbin iptable
  • visibilitychange事件,监听跳转第三方页面离开时和回来时的状态

    1 通过 document hidden 与 visibilitychange 事件判断网页可见性和操作 当H5页面切换到第三方页面 或从第三方页面切换到H5页面时 会在 docment 上触发 visibilityState 事件 举个栗
  • 基于STM32的智能小车--电机驱动设计

    基于STM32的智能小车 第一章 基于STM32的智能小车方案设计 基于STM32的智能小车 电机驱动设计 基于STM32的智能小车 前言 一 电机是什么 二 常见电机分类 1 有刷电机 2 无刷电机 二 有刷电机和无刷电机在调速上的差异
  • go 进阶 九. 定时器

    目录 一 Timer 内部包含的方法解释 1 创建定时器 2 停止定时器 3 重置定时器 4 After 匿名定时器 5 AfterFunc 延迟执行 使用场景举例 原理 1 底层结构 2 创建Timer 3 停止Timer 4 重置Tim
  • Vc - Qt - 仿微信聊天工具

    从小白开始 成神成魔之路记录 评论区 记录生活 一年成神 评论区自己可用其他人不可用 2021 11 13 8 49 仿照微信项目 服务器端 查找某个玩家的结果记录 2021 11 14 21 37 仿照微信服务器端 实现根据usernam
  • DVWA-----SQL Injection(SQL手工注入)

    目录 一 SQL注入 1 SQL注入原理 2 SQL注入分类 3 SQL注入思路 4 SQL注入绕过方法 二 SQL注入漏洞的分析 1 定义 2 原因 3 危害 三 Web 程序三层架构 四 SQL Injection 1 LOW 2 Me
  • odoo13 订单模板设置_ERP输出嵌入公章的采购订单电子档,其实真的不难

    企业里 采购订单 的发送是最频繁的工作 在过去还得打印出来 领导签完字 盖个章才可以传真出去 到如今 随着电子档的应用与通讯工具的普及 都是直接从ERP中输出PDF 再通过微信或QQ发给供应商 那下面我们介绍一下云上软件是怎么实现这个效果的
  • 商业思维--反向理论的合理性

    创业 是一种破坏 如果这种破坏不足够像美国的卡梅隆导演的电影一样 格局要大 步骤要细 反向理论是很多初期萌生创业想法的角斗士 那时候 的我们总是觉得思维远超爱因斯坦 然后寻找自我认知里的实现步骤 往往得到是 马爸说得 今天很多想法 睡一觉就
  • 【LLM】微调LLM:LoRA 还是全参数?Llama 2 的深入分析

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • CAS 未认证授权服务 不允许使用CAS来认证您访问的目标应用

    资源环境 CAS服务端 CAS 5 3 2 服务端 CAS客户端 Spring Boot CAS 客户端 访问过程 1 CAS 客户端访问本地项目指定端口 http localhost 9100 cas index 2 CAS 客户端调整至
  • tictoc例子理解 16-18

    tictoc16 18 tictoc 16 全局信号signal tictoc 17 在仿真界面幕布上显示总条数信息 tictoc 18 tictoc 16 全局信号signal 前一步的主要问题是 如果我们想要更改所收集的统计信息 就必须
  • html msn 消息,msn.html

    canvas 心 html body height 100 padding 0 margin 0 background 000 canvas position absolute width 100 height 100 Settings v
  • 51中断系统与vhdl状态机

    51中断系统与vhdl状态机 51单片机中断系统 1 为什么要引入中断 List item 51单片机中断系统 1 为什么要引入中断 中断是为使单片机具有对外部或内部随机发生的事件实时的处理而设置的 中断功能的存在 很大程度上提高了单片机处
  • vue中使用MINIO将文件上传到指定的bucket库中(vue2和vue3)

    步骤 MINIO官网 https docs min io docs javascript client quickstart guide html 下载minio npm install save minio 将minio集成到js中 在集