HarmonyOS 鸿蒙Next 文件上传只支持cache目录下的文件
HarmonyOS 鸿蒙Next 文件上传只支持cache目录下的文件
当前上传应用文件功能,仅支持上传应用缓存文件路径(cacheDir)下的文件。
某些业务需要上传本地相册图片到服务端,比如【修改头像】,这个时候该如何上传文件。
error:{"message":"Failed to open/read local data from file/application"
直接报错,还是权限的问题
今天找到方法了
将文件复制到cache目录
const filePath: string = result[0];
const resFile = fs.openSync(filePath, fs.OpenMode.READ_ONLY)
let newPath = context.cacheDir + "/" + resFile.name;
fs.copyFileSync(resFile.fd, newPath)
let formData = new FormData()
let realUri = "internal://cache/" + resFile.name;
formData.append('file', realUri)
然后参考下axios的文件上传代码:
https://gitee.com/openharmony-sig/ohos_axios#%E4%B8%8A%E4%BC%A0%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6
import axios from '[@ohos](/user/ohos)/axios'
import { FormData } from '[@ohos](/user/ohos)/axios'
let formData = new FormData()
formData.append(‘file’, ‘internal://cache/blue.jpg’)
// 发送请求
axios.post<string, AxiosResponse<string>, FormData>(‘https://www.xxx.com/upload’, formData, {
headers: { ‘Content-Type’: ‘multipart/form-data’ },
context: getContext(this),
onUploadProgress: (progressEvent: AxiosProgressEvent): void => {
console.info(progressEvent && progressEvent.loaded && progressEvent.total ? Math.ceil(progressEvent.loaded / progressEvent.total * 100) + ‘%’ : ‘0%’);
},
}).then((res: AxiosResponse<string>) => {
console.info(“result” + JSON.stringify(res.data));
}).catch((err: AxiosError) => {
console.error(“error:” + JSON.stringify(err));
})
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
升级HarmonyOS后,发现手机的游戏性能也有了显著提升。
尝试了图片选择器拿出来的文件路径,并不支持上传
同问
针对HarmonyOS鸿蒙Next文件上传只支持cache目录下的文件这一问题,以下是一些专业解答:
HarmonyOS鸿蒙Next确实限制了文件上传的目录范围,目前仅支持从应用的cache目录下选择文件进行上传。这是出于安全和应用数据管理的考虑。
若需要在应用中实现文件上传功能,建议按照以下步骤操作:
- 确保应用已正确配置网络权限,如“ohos.permission.INTERNET”,以允许应用执行网络请求。
- 使用文件选择器API或应用逻辑,将需要上传的文件保存到cache目录下。
- 构建包含文件数据的POST请求,注意设置正确的Content-Type,通常为multipart/form-data。
- 发送请求到服务器,并处理服务器的响应。
此外,若在设置代理后遇到文件上传接口报证书错误的问题,这通常与SSL证书验证有关。请检查证书有效性、代理服务器配置以及系统信任设置,确保客户端能够正确验证服务器证书。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html