HarmonyOS鸿蒙Next中http表单请求

HarmonyOS鸿蒙Next中http表单请求

multiFormDataList: [ // 可选,仅当Header中,'content-Type'为'multipart/form-data'时生效,自API 11开始支持该属性。
{
name: "Part1", // 数据名,自API 11开始支持该属性。
contentType: 'text/plain', // 数据类型,自API 11开始支持该属性。
data: 'Example data', // 可选,数据内容,自API 11开始支持该属性。
remoteFileName: 'example.txt' // 可选,自API 11开始支持该属性。
}, {
name: "Part2", // 数据名,自API 11开始支持该属性。
contentType: 'text/plain', // 数据类型,自API 11开始支持该属性。
// data/app/el2/100/base/com.example.myapplication/haps/entry/files/fileName.txt
filePath: `${context.filesDir}/fileName.txt`, // 可选,传入文件路径,自API 11开始支持该属性。
remoteFileName: 'fileName.txt' // 可选,自API 11开始支持该属性。
}
],
data不能传入file://media/Photo/5586/IMG_1760245317_5124/IMG_20251012_130017.jpg这种格式的文件吗
必须手动转换为应用内文件然后使用filePath才可以吗

更多关于HarmonyOS鸿蒙Next中http表单请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

是的,file://media/Photo/5586/IMG_1760245317_5124/IMG_20251012_130017.jpg是媒体文件URI,并不是直接的文件路径。不能直接用于表单上传,需要使用filePath传入文件路径代替data将文件数据设置为数据内容

【背景知识】

表单数据的类型

更多关于HarmonyOS鸿蒙Next中http表单请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,HTTP表单请求使用@ohos.net.http模块处理。通过createHttp()方法创建HTTP实例,调用request()方法发送请求。表单数据需以键值对形式放入extraData字段,并设置Content-Typeapplication/x-www-form-urlencoded。支持GET、POST等方法,POST请求自动处理表单编码。响应通过回调函数接收,包含状态码和返回数据。

在HarmonyOS Next中,multiFormDataListdata字段不支持直接传入file://格式的URI路径。该字段设计用于接收字符串或二进制数据内容,而非文件路径引用。

若需上传设备文件(如相册图片),必须先将文件复制到应用沙箱目录(如context.filesDir),再通过filePath属性指定路径。这是由HarmonyOS安全机制决定的——应用仅能直接访问沙箱内文件,外部存储需通过用户授权后复制到沙箱。

示例步骤:

  1. 使用picker选择文件获取URI
  2. 通过fs.copyFile()将文件复制至沙箱路径
  3. multiFormDataList中配置filePath: '${context.filesDir}/fileName.jpg'

直接使用file://路径会因权限限制导致操作失败。这种设计保障了用户文件系统的安全隔离。

回到顶部