前端上传minio

参考【GitCode - 全球开发者的开源社区,开源代码托管平台

注意事项:nodejs服务,文件扩展名为mjs,版本号8.0,引入的时候

import * as Minio from 'minio'
import Minio as * from 'minio'

// 实例化对象存储服务的MinIO客户端
// play.min.io是MinIO的公共测试集群
const minioClient = new Minio.Client({
  endPoint: 'play.min.io',
  port: 9000,
  useSSL: true,
  accessKey: 'Q3AM3UQ867SPQQA43P2F',
  secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
})

// 要上传的文件
const sourceFile = '/tmp/test-file.txt'

// 目标桶
const bucket = 'js-test-bucket'

// 目标对象名称
const destinationObject = 'my-test-file.txt'

// 检查桶是否存在
// 如果不存在,则创建桶
const exists = await minioClient.bucketExists(bucket)
if (exists) {
  console.log('Bucket ' + bucket + ' exists.')
} else {
  await minioClient.makeBucket(bucket, 'us-east-1')
  console.log('Bucket ' + bucket + ' created in "us-east-1".')
}

// 设置对象元数据
const metaData = {
  'Content-Type': 'text/plain',
  'X-Amz-Meta-Testing': 1234,
  example: 5678,
}

// 使用fPutObject上传文件
// 如果同名对象已存在,会用新数据更新
await minioClient.fPutObject(bucket, destinationObject, sourceFile, metaData)
console.log('File ' + sourceFile + ' uploaded as object ' + destinationObject + ' in bucket ' + bucket)

accessKey和secretKey注意要从服务端生成

执行命令:到文件所在文件夹打开终端

node file-uploader.mjs  // file-uploader.mjs为文件名

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端多线程上传minio可以通过Web Worker实现。Web Worker是一种在后台运行的JavaScript脚本,可以在不阻塞主线程的情况下进行耗时操作,如文件上传。以下是一个基本的前端多线程上传minio的示例代码: 1. 首先创建一个Worker对象,指定worker.js作为后台脚本: ```javascript var worker = new Worker("worker.js"); ``` 2. 在worker.js中编写上传代码,使用XMLHttpRequest或Fetch API上传文件。根据需求,可以将文件分割成多个小片并上传,或者使用断点上传技术实现断点续传。上传完成后,使用postMessage()方法将上传结果发送回主线程: ```javascript self.addEventListener('message', function(e) { var file = e.data.file; var xhr = new XMLHttpRequest(); xhr.open('PUT', 'http://minio.example.com/' + file.name, true); xhr.setRequestHeader('Content-Type', file.type); xhr.setRequestHeader('Content-Length', file.size); xhr.onreadystatechange = function() { if (xhr.readyState === 4) { if (xhr.status === 200 || xhr.status === 201) { self.postMessage({success: true, message: '上传成功'}); } else { self.postMessage({success: false, message: '上传失败'}); } } }; xhr.upload.onprogress = function(event) { var percent = Math.round((event.loaded / event.total) * 100); self.postMessage({progress: percent}); }; xhr.send(file); }, false); ``` 3. 在主线程中监听worker的message事件,接收上传结果并更新UI: ```javascript worker.addEventListener('message', function(e) { if (e.data.success) { alert('上传成功'); } else { alert('上传失败'); } }); ``` 4. 调用worker.postMessage()方法向worker发送上传任务: ```javascript var file = document.querySelector('#fileInput').files[0]; worker.postMessage({file: file}); ``` 需要注意的是,Web Worker只能在支持HTML5的浏览器中使用,且存在一定的安全性限制。上传minio需要使用PUT请求,并设置正确的Content-Type和Content-Length头信息,否则上传会失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值