当前位置: 首页 > 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.cnnetsun.cn/news/11250.html

相关文章:

  • 终极解决方案:微信网页版快速上手指南
  • N_m3u8DL-CLI-SimpleG终极自动化视频下载手册
  • 靠谱的航天级SSD固态硬盘哪个好
  • 基于Java Swing的拼图小游戏(2)
  • 【量子计算开发者必藏】:VSCode硬件对接配置的7个关键陷阱与规避方法
  • Wan2.2-T2V-A14B在文旅宣传视频批量生成中的落地实践
  • VSCode与Azure QDK联合调试深度解析,解锁量子编程高阶能力
  • 2025企业微信私域必开功能:会话存档的价值与实操指南
  • 基于大数据的校园网用户行为分析系统的设计与实现
  • VSCode调试量子神经网络的7个致命陷阱,第5个连资深工程师都中招
  • 9 个课堂汇报 AI 工具,本科生高效写作推荐
  • Wan2.2-T2V-A14B能否生成机场航班信息指引动画?公共信息服务升级
  • Wan2.2-T2V-A14B模型全面解读:从架构到应用场景
  • Bili2text:智能解析B站视频内容的文字转换利器
  • JVM深度调优:深入 G1、ZGC 等新型垃圾回收器的适用场景与调优参数
  • 博士生应该在大论文下功夫还是小论文? 虎贲等考AI智能写作:https://www.aihbdk.com/
  • Qwen3-VL-4B-Instruct-FP8震撼发布:多模态大模型技术突破引领行业新范式
  • 基于微信小程序的电影票预订系统毕业设计源码
  • 37、分布式网络文件系统全解析
  • AKM31C-ACSNLB0 伺服电机
  • E94ASHE0044伺服驱动器
  • Windows右键菜单终极清理指南:ContextMenuManager让你的电脑焕然一新
  • 通义千问凭借“门控注意力”斩获 NeurIPS 最佳论文奖!详解Gated Attention原理
  • 11、MobX实战应用与特殊API解析
  • 从加密到解析仅需2分钟:Dify自动化PDF处理黑科技曝光
  • 申请TELEC认证需要准备哪些材料?
  • 大模型微调技术全解析:程序员必备收藏指南
  • ABB AF460-30-11 空气断路器
  • 利用cubemx和HAL库重写江科协的oled驱动程序
  • LAMMPS分子动力学模拟技术与应用