关于HarmonyOS 鸿蒙Next ets,api8的文件上传问题
关于HarmonyOS 鸿蒙Next ets,api8的文件上传问题 我先描述一下当前的情况:
项目是基于ets,api8开发的,有一个文件上传的需求,使用mediaLibrary.getMediaLibrary().startMediaSelect获取到了图片,再使用request.upload进行上传。
然后虽然前端日志显示,上传已经到了uploadTask这一步,执行了
console.info("upload totalSize:" + totalSize + " uploadedSize:" + uploadedSize);
按理说,前端的文件上传是成功了,但是在后端php代码中,我执行了empty($_FILES)
,发现这段代码被触发了,即在后端这里,前端没有东西被传过来。
我在php代码中修改了一下,打印var_dump($_REQUEST)
;仍然是空,那说明后端是肯定没接收到请求的。
(这里说明一下,这个接口地址肯定没问题,因为如果有问题的话,那么后端都不会去打印出空的结果日志,并且项目中其他数据请求等也是走这个目录下的其他php接口,都没有问题,即使我php后面接受文件保存到本地等等代码写错,但是至少一开始打印就不可能为空)
接下来我仔细研读了一下文档,发现问题可能出在图片地址上,因为文档里的地址是internal://cache/xxx.png
这种格式,带后缀的,但是我通过mediaLibrary拿到的地址是dataability
最后跟数字的这种格式,当然我拿到的地址,可以直接在image里显示出我选择的图片。于是我在文档和论坛里搜索了一下,发现没有通过ets进行两个地址转换的代码,只有java版本的。
我记得之前发工单问的时候,客服跟我说,可以把图片放到resources/base/rawfile
文件夹下,但是api8中在base
下创建rawfile
文件夹会报错,我就放到了resources/rawfile
文件夹中,然后将文件的uri地址直接改成internal
的格式进行测试,发现后端没有打印信息(说明没有去请求接口),前端没有报错,也没有执行到uploadTask这一步,但同时也没有到err的部分,即,啥都没……
到这时候我开始怀疑,是不是我header设置的问题。
于是我把header改成了
let header = {
"Content-Type": 'multipart/form-data',
"Connection": "keep-alive",
"Content-Encoding":"gzip"
};
把两种文件地址格式,都拿来测试了一遍,依然不行。
目前是努力尝试到了这一步
==========================================
我这里再强调一下
权限给了,http的网络开了,用的真机(mate30pro),wifi
然后官方gitee上,上传下载的demo,没用,根本无法演示,他那个接口地址好像停用了
==========================================
然后我又发现了一个问题,那就是,最新的request.upload,只能通过size这个,来判断是否上传成功
但是如果后端在上传完毕后,还要给前端返回一点东西的话,就接收不到了
悬赏积分求人解决这个问题
当然,如果有人能提供ets api8下,选择文件上传的,前端+后端php代码,测试成功后,支付宝100悬赏
更多关于关于HarmonyOS 鸿蒙Next ets,api8的文件上传问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
楼主您好,api8的上传功能有demo可以参考。
https://gitee.com/openharmony/applications_app_samples/tree/master/Network/UploadDownload
更多关于关于HarmonyOS 鸿蒙Next ets,api8的文件上传问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
- 他这个 demo 有问题的
- 现在测试下来 php 写后端无法接收文件
具体的可以看:
https://developer.huawei.com/consumer/cn/forum/topic/0201105614631468552?fid=0101587866109860105
想问下博主,Request.upload
这个上传文件的接口我也是按照官方案例写的,然后又根据论坛别人发的帖子修改代码,但是后端一直没反应,后端用的是python写的,一直接收不到文件数据。所以想问下博主有没有成功的案例想参考下,可以是前端加后端一整套流程的案例。非常感谢博主!
关于HarmonyOS 鸿蒙Next ets,api8的文件上传问题,以下是一些直接相关的解答:
在HarmonyOS api8版本中,文件上传通常涉及文件系统访问权限以及网络请求处理。首先,确保你的应用已经声明了必要的权限,包括读写存储权限以及网络权限。这些权限通常在应用的manifest文件中配置。
文件上传的核心步骤包括:
- 选择文件:通过文件选择器让用户选择需要上传的文件。
- 读取文件:利用HarmonyOS的文件系统API读取用户选择的文件内容。
- 构建请求:根据文件内容构建HTTP请求,通常包括文件数据、文件名、MIME类型等信息。
- 发送请求:使用HarmonyOS的网络API发送HTTP请求到服务器。
- 处理响应:接收并处理服务器的响应,确认文件是否上传成功。
请注意,文件上传过程中可能遇到各种问题,如网络异常、文件读取错误等。务必在代码中添加适当的异常处理逻辑,以提高应用的健壮性。
此外,如果你使用的是HarmonyOS提供的特定库或框架进行文件上传,确保遵循其官方文档中的最佳实践和API使用指南。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,