当前位置: 首页 > article >正文

前端上传大文件,后端报错Content-Type ‘application/octet-stream‘ is not supported【解决】

    1. 报错内容org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/octet-stream' is not supported
    1. 组件库:naiveuiupload进行上传功能使用的主要组件
    1. 使用原生XMLHttpRequest进行接口请求
    1. authorization请求头需要手动写入
    1. 不需要手动配置请求头 文件格式类型 headers: { 'Content-Type': 'multipart/form-data' },
    1. xhr.onreadystatechange — 监听 readyState 变化
<script setup lang="tsx">

/**
 * 上传固件文件变化
 *
 * @param data
 */
const handleUploadChange = (data: {
  file: SettledFileInfo;
  fileList: SettledFileInfo[];
  event: ProgressEvent | Event | undefined;
}) => {
  fileList.value = data.fileList;
  fileData.value = data.file.file || undefined;
};

/** 上传固件 */
const upload = async () => {
const isHttpProxy = import.meta.env.DEV && import.meta.env.VITE_HTTP_PROXY === 'Y'; // 不同环境---域名不同
const { otherBaseURL } = getServiceBaseURL(import.meta.env, isHttpProxy);
const xhr = new XMLHttpRequest()

xhr.open('POST',otherBaseURL.aj+ '/monitor/ota/upgrade/upload', true);
xhr.onload = () => {
  const response=JSON.parse(xhr.response)//response就是服务器返回的信息
}
const formData = new FormData()

formData.append("file", firmwareModel.value.file)//

formData.append("otaUpgrade", new Blob([JSON.stringify({
  upgradePackageName: firmwareModel.value.upgradePackageName,
  upgradeType: 1,
  upgradeVersion: firmwareModel.value.upgradeVersion,
  deviceClassificationId: props.details.deviceClassificationId,
  middleClassId: props.details.middleClassId,
  typeCodeId: props.details.typeCodeId,
  isOldDevice: true,
  remark: firmwareModel.value.remark,
  packageType: props.details.packageType
})], { type: "application/json" }))
xhr.setRequestHeader('Authorization',window.sessionStorage.getItem('token'));

xhr.send(formData)//执行发送指令
  // 监听 readyState 变化
  xhr.onreadystatechange = function() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
      if (xhr.status === 200) {
        // 解析响应数据
        if(JSON.parse(xhr.response).status == -1){
          message.success('上传成功')
        }else{
          message.error(JSON.parse(xhr.response).message);
        }message 字段的值 // 输出: 已经存在同名的升级文件!
      } else {
        console.error('请求失败,状态码:', xhr.status);
      }
    }
  };

  submitLoading.value = false;
};
</script>
<template>
     <NUpload
       v-if="props.type === 'upload'"
        v-model:file-list="fileList"
        v-model:value="firmwareModel.file"
        directory-dnd
        multiple
        :max="1"
        @change="handleUploadChange"
      >
        <NUploadDragger>
          <div class="upload-icon">
            <NIcon size="48" :depth="3">
              <Archive16Filled />
            </NIcon>
          </div>
          <NText class="upload-content">点击或者拖动文件到该区域来上传</NText>
        </NUploadDragger>
      </NUpload>
      <span v-if="props.type === 'edit'">{{ props.details.upgradePackageName }}</span>
</template>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/a/389567.html

相关文章:

  • 拦截器实现http请求访问本地图片
  • 带你掌握springboot集成SpringSecurity安全框架
  • Qt 获取当前系统中连接的所有USB设备的信息 libudev版
  • 《TCP/IP网络编程》学习笔记 | Chapter 11:进程间通信
  • 智享AI 无人自动直播的崛起 ,引领智能互动与自动带货新潮流!
  • 关于sass在Vue3中编写bem框架报错以及警告问题记录
  • Spring Boot2.x教程:(十二)日志分割后续
  • #渗透测试#SRC漏洞挖掘#Python自动化脚本的编写04之通过面向对象编程学生管理信息系统01
  • 20241108,LeetCode 每日一题,用 Go 计算字符串中最长无重复字符
  • 创元集团携手火山引擎,数据飞轮驱动美妆品牌数字化转型
  • 一个基于Zookeeper+Dubbo3+SpringBoot3的完整微服务调用程序示例代码
  • C语言中,“extern”关键字的含义与用法
  • 网页版五子棋——用户模块(服务器开发)
  • 金山云C++面试题及参考答案
  • jenkins配置前端自动部署
  • MSB8041此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装-错误解决
  • 2024 年度分布式电力推进(DEP)系统发展探究
  • VBA08-if语句
  • 互动电影《催眠麦克风》官宣定档2.21预售正式开始
  • Kafka-linux环境部署
  • ssm077铁岭河医院医患管理系统+vue(论文+源码)_kaic
  • http协议与内外网的划分
  • uni-app资源管理与图标使用全解
  • Android 获取 SHA1 值的详细步骤
  • 【系统架构设计师】2024年下半年真题论文: 论面向服务的架构设计(包括解题思路和参考素材)
  • 【Linux探索学习】第十二弹——初识进程:进程的定义、描述和一些简单的相关操作