HarmonyOS 鸿蒙Next 使用http实现多表单上传图片以及携带参数
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 调用服务端接口时,返回参数错误。能否提供一个例子
可以参考如下:
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的简要实现思路:
-
准备数据:将图片转换为
MultipartBody.Part
对象,并构建其他参数为MultipartBody.FormDataPart
对象。 -
构建请求:使用
HttpURLConnection
或OkHttp
构建多部分表单请求(Multipart Form Data)。 -
设置请求头:确保请求头包含
Content-Type: multipart/form-data; boundary=...
,其中boundary
由实际生成的分隔符决定。 -
发送请求:将准备好的数据写入请求体,并发送请求。
-
处理响应:读取并处理服务器返回的响应。
示例代码(以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