HarmonyOS 鸿蒙Next 使用http实现多表单上传图片以及携带参数

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用http实现多表单上传图片以及携带参数

//携带的参数

let payload = from:${from}:to=${to}:v=3:paste=1

//上传的图片

let multiFormDataList: http.MultiFormData[] = [{
name: ‘image’,
contentType: ‘image/jpeg’,
filePath: imagePath,
remoteFileName: FileUtils.getFileName(imagePath)
}]<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

//header Content-Type:multipart/form-data 调用服务端接口时,返回参数错误。能否提供一个例子

2 回复

可以参考如下:

async http_request() {

// 上传ArrayBuffer

let uploadData = "108,109,110";

let splitArr = uploadData.split(",")

let uArr = new Uint8Array(splitArr.length)

splitArr.forEach((value, index) => {

uArr[index] = parseInt(value)

})

let requestMultipart : http.MultiFormData[] = [

// 上传表单参数

{

name: "name",

contentType: "",

data: "chisj"

},

{

name: "age",

contentType: "",

data: "18"

},

// 上传文件 filePath是文件沙箱路径

{

name: "file",

contentType: "multipart/form-data",

filePath: this.filePath

},

// 上传字节流

{

name: "arrayBuffer",

contentType: "application/octet-stream",

data: uArr.buffer

},

]

let result = await http.createHttp().request("http://139.196.175.126:7087/file/upload", {

method: http.RequestMethod.POST,

header: { "content-type": 'multipart/form-data' },

multiFormDataList: requestMultipart,

})

console.log("uploadLog === " + result.result as string)

}

// 日志打印如下 file里面的154表示文件的大小,其他都是以表单数据接收

uploadLog === {“arrayBuffer”:“lmn”,“file”:154,“name”:“chisj”,“age”:“18”} 复制 multiFormDataList : Array<MultiFormData> : 当’content-Type’为’multipart/form-data’时,则上传该字段定义的数据字段表单列表。

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http

filePath : string

此参数根据文件的内容设置mime部件的正文内容。用于代替data将文件数据设置为数据内容,如果data为空,则必须设置filePath。如果data有值,则filePath不会生效。

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http#multiformdata11

在HarmonyOS鸿蒙Next系统中,实现通过HTTP协议多表单上传图片及携带参数的功能,通常需要用到网络请求库,例如OkHttp或系统自带的网络请求API。以下是基于系统自带API的简要实现思路:

  1. 准备数据:将图片转换为MultipartBody.Part对象,并构建其他参数为MultipartBody.FormDataPart对象。

  2. 构建请求:使用HttpURLConnectionOkHttp构建多部分表单请求(Multipart Form Data)。

  3. 设置请求头:确保请求头包含Content-Type: multipart/form-data; boundary=...,其中boundary由实际生成的分隔符决定。

  4. 发送请求:将准备好的数据写入请求体,并发送请求。

  5. 处理响应:读取并处理服务器返回的响应。

示例代码(以HttpURLConnection为例,具体实现需根据API文档调整):

// 创建URL连接
HttpURLConnection connection = (HttpURLConnection) new URL("your_url").openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=---boundary");

// 写入数据(包括图片和其他参数)
OutputStream os = connection.getOutputStream();
// 写入图片和其他参数的具体代码
os.flush();
os.close();

// 读取响应
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// 处理响应的具体代码

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部