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

news2024/12/26 23:21:49
    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.coloradmin.cn/o/2238858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载

软件介绍 下载iOS旧版应用&#xff0c;简化繁琐的抓包流程。 一键生成去更新IPA&#xff08;手机安装后&#xff0c;去除App Store的更新检测&#xff09;。 软件界面 支持系统 Windows 10/Windows 8/Windows 7&#xff08;由于使用了Fiddler库&#xff0c;因此需要.Net环境…

第三十七章 Vue之编程式导航及跳转传参

目录 一、编程式导航跳转方式 1.1. path 路径跳转 1.1.1. 使用方式 1.1.2. 完整代码 1.1.2.1. main.js 1.1.2.2. App.vue 1.1.2.3. index.js 1.1.2.4. Home.vue 1.1.2.5. Search.vue 1.2. name 命名路由跳转 1.2.1. 使用方式 1.2.2. 完整代码 1.2.2.1. main.js 1…

《硬件架构的艺术》笔记(一):亚稳态

同步系统中如果数据和时钟满足建立保持时间的要求&#xff0c;不会发生亚稳态&#xff08;meastable&#xff09;。 异步系统中数据和时钟关系不固定&#xff0c;可能违反建立保持时间&#xff0c;就会输出介于两个有效状态之间的中间级电平&#xff0c;且无法确定停留在中间状…

【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)

先准备图片资源 推荐一个好用的图标素材网站&#xff0c;有很多免费资源。 Ic, fluent, animal, dog, filled icon - Free download 其他辅助工具&#xff0c;类似 AI 抠图去背景&#xff0c;实测效果还行&#xff0c;但是非免费。 美图秀秀-在线一键抠图&#xff0c;无需P…

【Android、IOS、Flutter、鸿蒙、ReactNative 】水平布局

Android Xml LinearLayout 两个TextView水平并排&#xff0c;宽度占比1:2 XML布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayoutxmlns:android"http://schemas.android.com/apk/res/…

基于OLAP湖仓一体架构,火山引擎ByteHouse助力企业降本提效

在数字化转型的浪潮中&#xff0c;企业对数据处理能力的要求日益提高。 过去&#xff0c;数据湖和数据仓库分别拥有两套独立的管理体系&#xff0c;这导致维护成本高昂&#xff0c;研发周期漫长。为了加强数据端到端的链路整合&#xff0c;构建一套低成本、高性能的数据湖仓一…

VMware虚拟机安装Windows11保姆级教程(最新步骤+踩坑)

文章目录 一、镜像下载&#xff1a; Windows 11 x64最新版&#xff08;包含专业版、家庭版、教育版&#xff0c;安装Windows11的时候可以自行选择系统版本&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1Vnh-7nphe_uQleW56PKDGQ 提取码&#xff1a;E288 二、配置虚…

2024 年 8 个最佳 API 设计工具图文介绍

8 个最佳 API 设计工具推荐&#xff0c;包括 Apifox、Postman、Swagger、Insomnia、Stoplight、Hoppscotch、RapidAPI和Paw。 详细介绍&#xff1a;2024 年 8 个最佳 API 设计工具推荐

26.校园快递物流管理系统(基于SSM和Vue的Java项目)

目录 1.系统的受众说明 2.相关技术 2.1 JAVA简介 2.2 SSM三大框架 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 2.6访问数据库实现方法 3. 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性&#xff1a;技术背景 3.2.2经济可行性…

JAVA学习日记(十三)常用算法API+Lambda表达式

一、Arrays 操作数组的工具类 import java.util.Arrays; import java.util.Comparator;public class Main {public static void main(String[] args){int[] arrnew int[]{1,2,3,4,5,6,7,8,9};//将数组变为字符串 toStringSystem.out.println(Arrays.toString(arr)); //[1, 2, …

实现linux定时备份数据至群晖NAS

实现LINUX定期备份数据至NAS中 前置条件 linux群晖NAS 1.NAS准备工作 首先确保NAS系统已经处于配置成功的状态 在控制面板–>文件服务–>rsync下启用rsync服务 启用之后会生成一个NetBackup的文件夹 2.在linux系统中测试一下rsync的备份命令 rsync -av -e ssh /li…

redis用法(二)

文章目录 02-redis数据类型篇生产环境下的redis实况图 1.全局命令redis数据存储格式set设置k-v查看当前redis的key的数量危险命令&#xff0c;新手请在于超老师陪同下执行为什么危险&#xff1f;如何正确搜索redis的key 查看库下有多少个key查询redis库信息切换redis库查看key是…

STM32问题集

这里写目录标题 一、烧录1、 Can not connect to target!【ST-LINK烧录】 一、烧录 1、 Can not connect to target!【ST-LINK烧录】 烧录突然 If the target is in low power mode, please enable “Debug in Low Power mode” option from Target->settings menu 然后就&…

aspose如何获取PPT放映页“切换”的“持续时间”值

aspose如何获取PPT放映页“切换”的“持续时间”值 项目场景问题描述问题1&#xff1a;从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2&#xff1a;aspose的依赖包中&#xff0c;所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混…

基于Python的药房管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【Linux】常用命令(2.6万字汇总)

文章目录 Linux常用命令汇总1. 基础知识1.1. Linux系统命令行的含义1.2. 命令的组成 2. 基础知识2.1. 关闭系统2.2. 关闭重启2.3. 帮助命令&#xff08;help&#xff09;2.4. 命令说明书&#xff08;man&#xff09;2.5. 切换用户&#xff08;su&#xff09;2.6.历史指令 3.目录…

wps导出图片图片特别多怎么进行排序,并且全部进行统一的修改名称

问题展示 想实现的效果 根据顺序变成数字顺序&#xff0c;方便后期自己页面开发的渲染 先确保自己有node环境电脑安装了node再创建一个index.js文件这个文件放在你导出文件的内 js内容 const fs require(fs); const path require(path);// 设置文件夹路径 const folderPat…

Ubuntu 的 ROS2 操作系统turtlebot3环境搭建

引言 本文介绍如何在 Ubuntu 系统上为 TurtleBot3 配置 ROS2 环境&#xff0c;提供详细的操作步骤以便在 PC 端控制 TurtleBot3。 本文适用于 ROS2 Humble 的安装与配置&#xff0c;涵盖必要的依赖包和 Gazebo 仿真环境的设置&#xff0c;帮助用户避免在环境搭建过程中遇到的兼…

区块链技术在慈善捐赠中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 引言 区块链技术概述 定义与原理 发…

C++ | Leetcode C++题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; class Solution { public:int nextGreaterElement(int n) {int x n, cnt 1;for (; x > 10 && x / 10 % 10 > x % 10; x / 10) {cnt;}x / 10;if (x 0) {return -1;}int targetDigit x % 10;int x2 n, cnt2 0;for (; x2 …