uniapp上传文件的载荷是个空对象

官方文件上传

原因:

uniapp上传文件的时候不能用 new FormData 上传,必须用 uni.uploadFile,是因为跨端环境不统一、没有 DOM、没有原生 File/FormData 对象。

一、各端根本差异(最关键)

1)小程序 / App(iOS/Android)
  • 没有浏览器 DOM :没有 window、没有 FormData、没有 File、没有 <input type="file">
  • 你拿不到浏览器里的 file 对象,自然没法 new FormData().append('file', ...)
  • 只能通过 uni 提供的 API 选文件:
    • uni.chooseImage
    • uni.chooseFile 返回的是临时路径字符串 (如 wxfile://..._www/...),不是 File 对象。
2)H5 端(浏览器)
  • 虽然浏览器有 FormData,但 uni.uploadFile 不接受原生 FormData 作为参数
  • uni.uploadFile 的 formData 只接受普通 JS 对象 (key-value),内部会帮你组装成正确的 multipart/form-data 请求。
  • 如果你在 H5 自己 new FormData 然后用 uni.request 发:
    • 容易边界(boundary)错误
    • Content-Type 写错
    • 二进制文件损坏
    • 后端收不到文件。

二、uni.uploadFile 做了什么(为什么必须用它)

它是 uni-app 跨端统一的文件上传专用 API

  1. 自动处理 multipart/form-data
    • 自动设置正确 Content-Type
    • 自动生成合法 boundary
    • 自动把文件流和表单字段打包。
  2. 统一路径处理
    • 小程序:wxfile://
    • App:本地绝对路径
    • H5:转成浏览器 File/Blob 你只需要传 filePath 字符串,不用管各端差异。
  3. 底层走平台原生能力
    • 小程序:底层调用 wx.uploadFile
    • App:原生网络库上传
    • 比自己用 uni.request + FormData 稳定得多。
相关推荐
牧艺6 分钟前
cos-design WeatherBackground:用 Canvas 做一个「会变天」的背景引擎
前端·canvas·视觉设计
OpenTiny社区10 分钟前
深度解析 LSP 如何为 AI 装上“眼睛”
前端·ai编程
布列瑟农的星空19 分钟前
流程类SVG画布的通用开发范式
前端
fsssb22 分钟前
Chromium 源码学习笔记(七):那些跨进程的调用,底下都是同一个东西——Mojo
前端
MichaelJohn1 小时前
从零星白屏到“启发式缓存”,记录一次刚接手屎山的惊险排查
前端
程序员黑豆1 小时前
鸿蒙应用开发:6种图片加载方式详解
前端·华为·harmonyos
半个落月1 小时前
用 React 搭一个 WebGPU 模型加载页:从状态驱动到可复用进度条
前端·react.js
雪隐2 小时前
个人电脑玩AI-13让5060 Ti给你打工——我用 0.9B 小模型终结了"谁来记会议纪要"这个世纪难题
前端·人工智能·后端
橘子星2 小时前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
70asunflower2 小时前
初学者理解 Web 工作原理(完全教程)
前端