HarmonyOS 鸿蒙Next Arkts上传文件后端无法接收请求,显示上传成功但SpringBoot后端无法收到该请求
HarmonyOS 鸿蒙Next Arkts上传文件后端无法接收请求,显示上传成功但SpringBoot后端无法收到该请求
使用上传文件,request.upload
前端代码:
public uploadFile (fileNames: string[], orderId: number) {
let uploadTask;
let uploadConfig = {
url: `${CommonConstants.BASE_URL}/image/common/handleFilesTest1`,
header: {'Content-Type': 'multipart/form-data; boundary=<calculated when request is sent>'},
method: "POST",
files: [{ filename: fileNames[0], name: "test", uri: "internal://cache/" + fileNames[0], type: "jpg" }],
data: [{ name: "orderId", value: orderId.toString() }],
};
if (fileNames.length === 0) {
return;
} else {
uploadConfig.files = [];
for (let fileName of fileNames) {
let file = {
filename: fileName,
name: "test",
uri: "internal://cache/" + fileName,
type: "jpg"
}
uploadConfig.files.push(file);
}
console.log("upload files " + uploadConfig.files)
console.log("upload data " + JSON.stringify(uploadConfig.data))
}
try {
request.uploadFile(getContext(this), uploadConfig).then((data) => {
uploadTask = data;
console.log("上传照片成功" + JSON.stringify(data))
}).catch((err) => {
console.error('上传照片失败Failed to request the upload. Cause: ' + JSON.stringify(err));
});
} catch (err) {
console.error('上传照片失败err.code : ' + err.code + ', err.message : ' + err.message);
}
}
后端代码
@PostMapping("/handleFiles")
public ResultVo handleFiles(@RequestParam("files") MultipartFile[] files, @RequestParam("data") String dataList) {
System.out.println("filefile-----------------------------11111111111111111111111");
List<data> list = JSON.parseArray(dataList, data.class);
for (int i = 0; i < files.length; i++) {
String filePath = fileUploadService.imageToURL(files[i]);
int orderId = Integer.parseInt(list.get(i).getValue());
UpdateWrapper<RepairOrder> repairOrderUpdateWrapper = new UpdateWrapper<>();
int temp = i + 1;
String col = "spot_picture" + Integer.toString(temp);
repairOrderUpdateWrapper.eq("order_id", orderId)
.set(col,filePath);
repairOrderService.update(repairOrderUpdateWrapper);
}
return ResultUtils.success("成功上传图片");
}
@PostMapping("/handleFilesTest")
public ResultVo handleFilesTest(String orderId, @RequestParam("files") MultipartFile[] files) {
System.out.println("filefile-----------------------------22222222222222222");
for (int i = 0; i < files.length; i++) {
String filePath = fileUploadService.imageToURL(files[i]);
int id = Integer.parseInt(orderId);
UpdateWrapper<RepairOrder> repairOrderUpdateWrapper = new UpdateWrapper<>();
int temp = i + 1;
String col = "spot_picture" + Integer.toString(temp);
repairOrderUpdateWrapper.eq("order_id", id)
.set(col,filePath);
repairOrderService.update(repairOrderUpdateWrapper);
}
return ResultUtils.success("成功上传图片");
}
@PostMapping("/handleFilesTest1")
public ResultVo handleFilesTest1(String orderId, MultipartHttpServletRequest multiPartRequest) {
System.out.println("filefile-----------------------------22222222222222222");
Iterator<String> itr = multiPartRequest.getFileNames();
List<MultipartFile> fileList = new ArrayList<>();
while (itr.hasNext()) {
String fileName = itr.next();
System.out.println("fileName: " + fileName);
fileList = multiPartRequest.getFiles(fileName);
System.out.println("filesSize: " + fileList.size());
break;
}
for (int i = 0; i < fileList.size(); i++) {
System.out.println("file " + i + ":" + fileList.get(i));
String filePath = fileUploadService.imageToURL(fileList.get(i));
int id = Integer.parseInt(orderId);
UpdateWrapper<RepairOrder> repairOrderUpdateWrapper = new UpdateWrapper<>();
int temp = i + 1;
String col = "spot_picture" + Integer.toString(temp);
repairOrderUpdateWrapper.eq("order_id", id)
.set(col,filePath);
repairOrderService.update(repairOrderUpdateWrapper);
}
return ResultUtils.success("成功上传图片");
}
这三种都尝试过了,都无法接受到前端的upload请求,我想请问一下,是不是我后端的参数设置有问题,后端无论在本地还是服务器,都无法接受到upload请求。 另外,我是在模拟机上面执行的,还没有在真机上面试过。
更多关于HarmonyOS 鸿蒙Next Arkts上传文件后端无法接收请求,显示上传成功但SpringBoot后端无法收到该请求的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以参考开启on(‘headerReceive’),上传文件后接受后端返回数据。其中响应体的 header 和 body 都会在这个 header object 里存放。
更多关于HarmonyOS 鸿蒙Next Arkts上传文件后端无法接收请求,显示上传成功但SpringBoot后端无法收到该请求的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
已经解决了,发现是自己把图库的照片复制到cache的时候少打了一个/,希望后面的朋友们引以为戒。
请问楼主解决了吗,我也遇到这个问题,你试试上传一个很小的图片试试,我很小的就能够上传
你好!我用的几百k的照片测试还是不可以,请问可以看看你的后端接口的代码(参数如何存取)和app端上传文件的代码吗?
HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。
另外,后端接口我在postman测试,后端是可以接收到这个请求并且成功处理的

在HarmonyOS鸿蒙Next中使用ArkTS上传文件时,如果前端显示上传成功但SpringBoot后端无法接收到请求,可能的原因包括:
- 网络请求配置问题:ArkTS中的网络请求配置可能未正确设置,如URL、请求方法、请求头等,导致请求未正确发送到后端。
- 跨域问题:如果前端和后端部署在不同的域名或端口下,可能存在跨域问题,导致请求被浏览器拦截。
- 请求体格式问题:上传文件时,请求体的格式(如
multipart/form-data)可能未正确设置,导致后端无法解析。 - 文件大小限制:后端可能对上传文件的大小进行了限制,超过限制的文件会被拒绝。
- 后端接口问题:后端的接口可能未正确处理文件上传请求,或者接口路径、参数等配置有误。
- 网络代理或防火墙:网络中的代理或防火墙可能拦截了上传请求,导致后端无法接收到请求。
- 日志记录问题:后端可能未正确记录接收到的请求日志,导致看似未接收到请求。
- 前端代码问题:前端代码可能存在逻辑错误,如未正确触发上传事件或未正确处理上传结果。
- 服务器配置问题:服务器可能未正确配置,导致无法处理上传请求。
- 版本兼容性问题:ArkTS与SpringBoot的版本可能存在兼容性问题,导致请求无法正常处理。
建议检查上述可能的错误点,确保网络请求配置正确、跨域问题解决、请求体格式正确、文件大小符合限制、后端接口正确处理、网络代理或防火墙未拦截请求、日志记录正确、前端代码无误、服务器配置正确以及版本兼容性良好。
在HarmonyOS 鸿蒙Next Arkts上传文件时,后端无法接收请求,可能是以下几个原因导致的:
-
请求头设置问题:检查上传文件的请求头是否正确,确保
Content-Type设置为multipart/form-data,并且包含boundary。 -
文件数据格式:确保文件数据以正确的格式发送,SpringBoot通常使用
MultipartFile接收文件,确保文件数据与后端接口匹配。 -
网络请求配置:确认网络请求配置是否正确,包括URL、请求方法(POST)等。
-
后端接口问题:检查后端接口是否正确处理文件上传请求,确保
@RequestParam或@RequestPart注解使用正确。 -
日志调试:启用SpringBoot的日志调试,查看请求是否到达后端,是否有异常信息。
如果问题依旧,建议通过抓包工具(如Wireshark或Fiddler)分析请求数据,确保请求格式和内容符合后端要求。

