HarmonyOS 鸿蒙Next request.uploadFile 上传多文件
HarmonyOS 鸿蒙Next request.uploadFile 上传多文件 在使用request.uploadFile实现 multipart/form-data 一个请求上传多个文件,抓包发现,会发起多次请求,每次上传一个文件。
async function uploadFile(context: common.UIAbilityContext, func: string, params?: object, method?: http.RequestMethod, expectDataType?: http.HttpDataType): Promise<string> {
let netUrl = `${NetHelper.getBaseUrl(this.netWork, params)}${func}`;
let fileName: string = "";
let fileList = params["fileList"] as string[];
let files: request.File [] = [];
for(let filePath of fileList) { // 文件集合
fileName = filePath.substring(filePath.lastIndexOf("/")+1, filePath.length);
let parentDir: string | null = FileManager.getParentDir(filePath);
if (parentDir != FilePathGenerator.cacheDir) {
FileManager.copyFileSync(filePath, `${FilePathGenerator.cacheDir}/${fileName}`);
}
let suffixIndex = fileName.lastIndexOf(".");
files.push({ filename: fileName, name: fileName, uri: "internal://cache/" + fileName,
type: suffixIndex >= 0 ? fileName.substring(suffixIndex + 1, fileName.length) : "" });
}
let uploadConfig: request.UploadConfig = {
url: netUrl,
header: headers,
method: method?.valueOf(),
files: files,
data: datas,
};
return new Promise(async (resolve, reject) => {
try {
const uploadTask = await request.uploadFile(context, uploadConfig);
uploadTask.on('complete', (taskStates: Array<request.TaskState>) => {
logger.debug('taskStates');
logger.debug('taskStates[0].message:' + taskStates[0].message);
return resolve(taskStates[0].message);
});
uploadTask.on("progress", (receivedSize: number, totalSize: number) => {
logger.debug("progress", `receivedSize: ${receivedSize} totalSize:${totalSize}`);
});
} catch (e) {
logger.error("uploadFile error:", e);
reject(new RYError("", RYErrorCode.UploadError, e));
}
})
}
更多关于HarmonyOS 鸿蒙Next request.uploadFile 上传多文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
试下直接使用ohos.net.http进行数据请求
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-http-V5#%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97
更多关于HarmonyOS 鸿蒙Next request.uploadFile 上传多文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙)系统中,若你正在使用request.uploadFile
方法上传多文件,通常该方法可能不支持直接传递多个文件。不过,鸿蒙系统提供了多种网络请求和处理方式,你可以通过以下思路实现多文件上传:
-
文件打包:先将多个文件打包成一个压缩文件(如zip格式),然后上传这个压缩文件。服务器端在接收到压缩文件后,再进行解压处理。
-
逐个上传:编写一个循环,通过多次调用
request.uploadFile
方法,逐个上传文件。服务器端需要能够处理多个上传请求,并将这些文件重新组合。 -
表单数据上传:如果
request.uploadFile
方法支持表单数据(类似于HTML中的<form>
标签),你可以将多个文件作为表单的不同部分进行上传。这需要服务器端能够解析这种多部分表单数据(multipart/form-data)。 -
自定义请求:使用鸿蒙提供的网络请求API(如
HttpURLConnection
或第三方库)构建自定义的HTTP请求,将多个文件作为请求体的一部分进行上传。
请根据你的具体需求和服务器端的能力选择合适的方法。如果问题依旧没法解决请联系官网客服, 官网地址是 https://www.itying.com/category-93-b0.html,