在HarmonyOS系统中,context.cacheDir获取的路径是应用的缓存路径,而不是内部协议路径(internal://开头的路径)。具体来说:context.cacheDir获取的是应用的缓存路径,例如"/data/storage/el1/base/path/to/file.txt"。内部协议路径"internal://“用于指定调用方(即传入的context)对应的路径,例如"internal://cache/path/to/file.txt”。因此,如果你需要获取内部协议路径,可以使用"internal://"加上相应的路径来指定文件位置。在HarmonyOS系统中,"internal://cache"路径用于表示调用方(即传入的context)对应的缓存路径。具体来说,"internal://cache"对应的是context.cacheDir路径目前可以使用 fs.copyFile接口,来把文件拷贝到cache目录下再进行上传参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-fileio-V5\#fileiocopyfilehttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5// pages/xxx.ets import common from '@ohos.app.ability.common'; import fs from '@ohos.file.fs'; import request from '@ohos.request'; import { BusinessError } from '@ohos.base'; import { photoAccessHelper } from '@kit.MediaLibraryKit'; // 获取应用文件路径 let context = getContext(this) as common.UIAbilityContext; let cacheDir = context.cacheDir; @Entry @Component struct Index12 { @State message: string = 'Hello World'; build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) Button('复制') .onClick(async () => { let uri = 'file://media/Photo/5/IMG_1718353652_004/IMG_004.jpg'; let file = fs.openSync(uri) console.log('-------file',file.name) fs.copyFileSync(file.fd,cacheDir+"/IMG_003.jpg") fs.closeSync(file) let file1 = fs.openSync(cacheDir+"/IMG_003.jpg") console.log('-------file1',file1.name) }) } } } }
在HarmonyOS系统中,context.cacheDir获取的路径是应用的缓存路径,而不是内部协议路径(internal://开头的路径)。具体来说:
因此,如果你需要获取内部协议路径,可以使用"internal://"加上相应的路径来指定文件位置。
在HarmonyOS系统中,"internal://cache"路径用于表示调用方(即传入的context)对应的缓存路径。具体来说,"internal://cache"对应的是context.cacheDir路径
目前可以使用 fs.copyFile接口,来把文件拷贝到cache目录下再进行上传
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-fileio-V5\#fileiocopyfile
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5