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

Vue3上传文件自动处理Content-Type

vue3中,以下代码: /** * 上传作业指导书文件,实现上传文件到数据库 image 字段或本地磁盘中,使用 post 发送请求,发送的数据只有:请求体数据(表单数据 formData) * @param formData 表单数据,包含的数据有:文件数据(uploadFile)和 文件编号(fileNo) {@link FormData} * @returns */ export const workInstructionUploadFileService = (formData: FormData) => { return request.post("/resources/workInstruction/uploadFile", formData, { // 上传文件,需设置 headers 信息,将"Content-Type"设置为"multipart/form-data" headers: { "Content-Type": "multipart/form-data" } }); }; 需不需要设置"Content-Type": "multipart/form-data"?

不需要手动设置"Content-Type": "multipart/form-data"

原因如下:

1. 浏览器会自动设置

当使用FormData对象发送请求时,浏览器会自动设置正确的Content-Type,并包含必要的 boundary(边界分隔符)。手动设置可能会破坏这个机制。

2. 会丢失 boundary 信息

如果你手动设置了"Content-Type": "multipart/form-data",但没有包含 boundary,请求会失败。正确的格式应该是:

text

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

3. 推荐的正确写法

typescript

export const workInstructionUploadFileService = (formData: FormData) => { return request.post("/resources/workInstruction/uploadFile", formData); // 不需要手动设置 headers,axios 会自动处理 };

4. 验证方式

你可以在浏览器开发者工具的 Network 标签页查看实际的请求头,会发现:

  • 手动设置时:Content-Type: multipart/form-data

  • 自动设置时:Content-Type: multipart/form-data; boundary=...

5. 特殊情况

只有在以下情况下需要手动设置:

  • 使用的请求库不支持自动设置

  • 需要自定义 boundary(极少情况)

  • 需要在 header 中添加其他特定信息

对于你使用的axios或类似的现代 HTTP 库,它们都会自动正确处理FormData的 Content-Type。

建议修改:

typescript

/** * 上传作业指导书文件 * @param formData 包含 uploadFile 和 fileNo 的表单数据 * @returns */ export const workInstructionUploadFileService = (formData: FormData) => { return request.post("/resources/workInstruction/uploadFile", formData); // axios 会自动设置正确的 Content-Type 和 boundary };

这样代码更简洁,也更符合最佳实践。

http://www.rkmt.cn/news/84990.html

相关文章:

  • 终极解决方案:微信网页版快速上手指南
  • Wan2.2-T2V-A14B生成视频的元数据可追溯性设计
  • Wan2.2-T2V-A14B如何处理复杂场景下的光照和阴影变化?
  • Wan2.2-T2V-A14B能否生成健身房器械使用教学动画?大众健身普及
  • 人工智能:重塑未来的核心驱动力
  • 机器学习进阶<8>PCA主成分分析
  • Blender 3DM导入终极指南:快速实现Rhino到Blender的无缝转换
  • DevUI面向企业中后台产品的开源前端解决方案,玩转图表类组件
  • 12.11postman,数据库表设计,idea中基本操作和debug
  • 双十二电商人!怎么远程管理店铺?
  • Windows右键菜单大扫除:ContextMenuManager极简使用手册
  • kanass全面介绍(7) - 需求管理详解
  • Wan2.2-T2V-A14B如何生成带有定位图标移动的导航视频?
  • 阿里巴巴Qwen大模型量化技术全解析:从模型适配到部署实践
  • 重磅发布:Qwen3-32B-AWQ模型震撼登场,引领大语言模型高效部署新纪元
  • Windows右键菜单终极优化指南:用ContextMenuManager告别菜单混乱
  • AI语音变声技术终极指南:从零开始掌握实时声音转换的秘诀
  • 考试场景下的MCP AI Agent容灾设计(专家级高可用部署方案曝光)
  • 66、数字视频的数字版权管理(DRM)技术解析
  • 67、数字内容安全与水印技术全解析
  • 如何快速解锁网易云音乐NCM文件:终极免费转换指南
  • Linux GPIO模拟SPI
  • Wan2.2-T2V-A14B在非遗文化传承纪录片中的创造性转化
  • ncmdump解密指南:如何高效转换NCM音乐格式
  • 基于大数据分析的活动报名笔记日记分享系统的设计与实现
  • Wan2.2-T2V-A14B能否生成宠物拟人化剧情?萌宠经济内容创新
  • dfs与bfs搜索以及剪枝优化
  • Wan2.2-T2V-A14B能否生成城市交通流模拟视频?智慧城市规划辅助
  • 商标名称里面有这类词,会影响通过!
  • 9 个课堂汇报 AI 工具,本科生高效写作推荐