首页 > 其他分享 >vue上传minio后无法预览 文件损坏

vue上传minio后无法预览 文件损坏

时间:2024-07-10 11:45:56浏览次数:7  
标签:文件 vue console minio 预览 fileByte xhr Amz 上传

文件损坏或者无法预览基本上都和两个问题有关

  1. Minio内部文件类型错误
  2. 上传文件时传输的数据存在问题

需要注意上传文件需要使用PUT方法,同时需要提交二进制数据
所以web页面在上传之前需要读取文件二进制后在上传,同时需要注意调整Content-Type为实际的文件MIME类型

可以在选择文件后通过FileReader读取文件的二进制数据,随后直接提交二进制数据即可

测试代码

<script setup>
import { onMounted, ref } from 'vue';
import axios from 'axios';

const count = ref(0)
let fileByte = null;

onMounted(() => {
  let fileInput = document.getElementById('file-input');
  // console.log(fileInput)

  fileInput.onchange = function () {
    var file = this.files[0];
    if (!!file) {
      var reader = new FileReader();
      reader.readAsArrayBuffer(file);
      reader.onload = function () {
        var binary = this.result;
        fileByte = binary;
        
        console.log(fileByte)
      }
    }
  }
});


async function increment() {
  console.log(fileByte)
  // return;
  let uploadURL = "http://192.168.2.90:9000/mes/test.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20240710%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240710T031256Z&X-Amz-Expires=1000&X-Amz-SignedHeaders=host&X-Amz-Signature=e58dba3dcde558f84e6d993987c75624023983827ede493957f9ba6ed8d71f3f";


  axios.put(uploadURL, fileByte, {
    headers: {
      'Content-Type': "application/pdf"
    },
    // responseType: "blob"
  }).then((response) => {
    console.log('文件上传成功:', response);
  }).catch((error) => {
    console.error('文件上传失败:', error);
  });

  //也可以使用XMLHttpRequest提交
  // var xhr = new XMLHttpRequest();
  // xhr.open("PUT", uploadURL);
  // // xhr.overrideMimeType("application/pdf");
  // xhr.setRequestHeader('Content-Type',"application/pdf");
  // //直接发送二进制数据
  // if (xhr.sendAsBinary) {
  //   xhr.sendAsBinary(fileByte);
  // } else {
  //   xhr.send(fileByte);
  // }

  // // 监听变化
  // xhr.onreadystatechange = function (e) {
  //   if (xhr.readyState === 4) {
  //     if (xhr.status === 200) {
  //       // 响应成功       
  //     }
  //   }
  // }
}
</script>

<template>
  <input type="file" id='file-input'>


  <input type="button" value="test" @click="increment" />
</template>

[参考]
使用restsharp上传minio后文件无法预览
前端H5中JS用FileReader对象读取blob对象二进制数据,文件传输

标签:文件,vue,console,minio,预览,fileByte,xhr,Amz,上传
From: https://www.cnblogs.com/ives/p/18293597/minio_vue

相关文章

  • Nginx——一个域名下部署多个Vue项目
    前言当前生成环境已经有一个正常的Vue项目,现在需要将大屏项目也部署到同一个域名下,搜索了下类型的问题,感觉问的还挺多的,所以这里记录下操作步骤;如何在不动第一个项目的情况下来部署第二个Vue项目;内容前端配置publicPath修改vue.config.js下的publicPath参数publicPath:pr......
  • 毕业设计-基于Springboot+Vue的家政服务管理平台的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456882基于SpringBoot+Vue的家政服务管理平台开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/1gssA8jncDvvFfo8NSHDh8g?pw......
  • 毕业设计-基于Springboot+Vue的社区医院管理服务系统的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/89456872基于SpringBoot+Vue的社区医院管理服务系统开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.baidu.com/s/14Zrh0wu8QdSeEJof1uyc0......
  • vue 点击图片方法
    一般项目中需要点击触发事件才进行查看大图,elementUi组件库中并没有写触发需要执行的代码,这里在触发的方法中加this.$refs.preview.clickHandler()触发查看大图功能<el-uploadclass="avatar-uploader"accept=".jpg,.jpeg,.png"name="image":action="uploadI......
  • 基于java+springboot+vue实现的音乐网站(文末源码+Lw)102
     功能介绍:本音乐网站管理员功能有个人中心,用户管理,歌曲分类管理,歌曲信息管理,管理员管理,系统管理等。用户可以注册登录,试听歌曲,可以下载歌曲。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、......
  • 基于java+springboot+vue实现的校园社团管理平台(文末源码+Lw)101
     本校园社团信息管理系统功能有个人中心,学生管理,社长管理,社团分类管理,社团信息管理,加入社团管理,社团成员管理,社团活动管理,活动报名管理,系统管理等。社长添加社团,管理员审核社团,学生加入社团,社长审核社团。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MY......
  • 基于springboot+vue实现的大型商场应急预案管理系统(文末源码+Lw)099
    本大型商场应急预案管理系统管理员功能有个人中心,员工管理,预案信息管理,预案类型管理,事件类型管理,预案类型统计管理,事件类型统计管理,应急预案管理。员工可以查看各种预案信息。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MYSQL数据库设计开发,充分保证系......
  • 基于java+springboot+vue实现的音乐网站(文末源码+Lw)102
     功能介绍:本音乐网站管理员功能有个人中心,用户管理,歌曲分类管理,歌曲信息管理,管理员管理,系统管理等。用户可以注册登录,试听歌曲,可以下载歌曲。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、......
  • 基于java+springboot+vue实现的校园社团管理平台(文末源码+Lw)101
     本校园社团信息管理系统功能有个人中心,学生管理,社长管理,社团分类管理,社团信息管理,加入社团管理,社团成员管理,社团活动管理,活动报名管理,系统管理等。社长添加社团,管理员审核社团,学生加入社团,社长审核社团。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MY......
  • 基于springboot+vue实现的大型商场应急预案管理系统(文末源码+Lw)099
    本大型商场应急预案管理系统管理员功能有个人中心,员工管理,预案信息管理,预案类型管理,事件类型管理,预案类型统计管理,事件类型统计管理,应急预案管理。员工可以查看各种预案信息。因而具有一定的实用性。本站是一个B/S模式系统,采用SpringBoot框架,MYSQL数据库设计开发,充分保证系......