当前位置: 首页 > 知识库问答 >
问题:

javascript - minio上传特别慢、上传文件不对?

夏锐藻
2023-08-10
 async minioUpload(contentFile) {               this.$myHttp({                  method: 'get',                  url: `${this.prefix}/doc/sysAttach/getFrontUploadMinioAttach?fileName=${contentFile.name}&fileSize=${contentFile.size}`,                  data: '',                  headers: { 'Authorization': 'Sys ' + sessionStorage.getItem('token'),  'showLoading':'false' }                }).then((res) => {                    const data = res.data                    this.minioUploadMth(data,contentFile)                  })                  .catch((error) => {                   this.$message.error(error)                  })            },            minioUploadMth(data,contentFile){              console.log('contentFile')              const minioClient = new Minio.Client({                endPoint: '192.168.209.93',                port: 9999,                useSSL: false, // 是否使用ssl                accessKey: 'minioadmin',                secretKey: 'minioadmin'              })            let that=this            this.getFileStream(contentFile).then((fileStream)=>{              console.log('123------',contentFile)              console.log("--------------",data.attachPath, fileStream, contentFile.size, contentFile.type)              minioClient.putObject('no-version-bucket', data.attachPath, fileStream, contentFile.size, null, function(err, etag) {                //1002: 上传成功, 1003: 上传失败                let tempTransferStatus=null                if (err){                  console.log('minio上传',err, etag)                  tempTransferStatus=1003                  that.$message.error(err)                  return                }                   console.log('File uploaded successfully.');                  tempTransferStatus=1002                  //上传成功告诉后台                  that.$myHttp({                  method: 'post',                  url: `${that.prefix}/doc/sysAttach/updateTransStatus`,                  data: {                    id:data.id,                    transferStatus:tempTransferStatus                  },                  headers: { 'Authorization': 'Sys ' + sessionStorage.getItem('token'),  'showLoading':'false' }                })              })            })                        },          getFileStream(file) {            return new Promise((resolve, reject) => {              let reader = new FileReader()              reader.readAsText(file)// 将文件转换为字符串              reader.onload = (e) => {                 resolve(reader.result)              }              reader.onerror = () => { // 文件读取失败时触发                reject(reader.error)              }                  },

getFileStream光将文件转换为字符串就需要特别长的时间,再到切片,而且上传上去的文件比原来大了,再下载下来也不对

共有2个答案

谢承颜
2023-08-10

看看这个例子:TypeScript前端上传文件到MinIO实例
或者用Blob,fetch的API会自动处理文件流,不用你手动读文件内容:

const file = ref<File | null>(null);const handleFileChange = (e: Event) => {  const target = e.target as HTMLInputElement;  file.value = target.files?.[0] || null;};const upload = async () => {  if (!file.value) return;  const presignedUrl = await getPresignedUrl(file.value.name, file.value.type);  await fetch(presignedUrl, {    method: 'PUT',    body: file.value,  });};
袁高峰
2023-08-10

首先这个网络带宽确认是不是限制了,然后再下载下来不对,是哪不对,是无法正常使用还是怎么了

 类似资料:
  • 我正在开发一个带有文件上传的web应用程序。 我只是写了一个PHP代码来上传一个图像。 当我运行此代码时,我可以在文件上传时获得输出,如果上传错误 我给了777权限来访问pic文件夹 有什么问题,有什么想法吗,, 类型 Print_R 数组 谢啦

  • minio如何获取上传文件进度? 使用putObject,看文档并没有关于获取上传进度相关参数

  • 在Yii里上传文件通常使用 yii\web\UploadedFile 类, 它把每个上传的文件封装成 UploadedFile 对象。 结合 yii\widgets\ActiveForm 和 models,你可以轻松实现安全的上传文件机制。 创建模型 和普通的文本输入框类似,当要上传一个文件时,你需要创建一个模型类并且用其中的某个属性来接收上传的文件实例。 你还需要声明一条验证规则以验证上传的文件

  • 大多数的 Web 应用都不可避免的,会涉及到文件上传。文件上传,不过是一种适配 HTTP 输入流的方式。 为此,Nutz.Mvc 内置了一个专门处理文件上传的适配器 org.nutz.mvc.upload.UploadAdaptor 这个适配器专门解析形式为 <form target="hideWin" enctype="multipart/form-data" method="post">

  • 哦,上传文件可是个经典的好问题了。文件上传的基本概念实际上非常简单, 他基本是这样工作的: 一个 <form> 标签被标记有 enctype=multipart/form-data ,并且 在里面包含一个 <input type=file> 标签。 服务端应用通过请求对象上的 files 字典访问文件。 使用文件的 save() 方法将文件永久地 保存在文件系统上的某处。 一点点介绍 让我们建立一

  • Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数 属性 count:对象总数 num_pages:页面总数 page_range:页码列表,从1开始,例如[1, 2, 3, 4] 方法 page(num):下标以1开始,如果提供的页码不存在