HarmonyOS 鸿蒙Next request.uploadFile是否只能上传cache目录下的文件?

HarmonyOS 鸿蒙Next request.uploadFile是否只能上传cache目录下的文件?

请问类似:file://media/Photo/61/这个路径下的文件如何上传到服务器哈 
 

2 回复

上传只能上传cache目录下的文件,如果你需要上传相册,需要利用fs文件的能力,把相册图片拷贝到cache目录下 fs参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fscopyfilesync

上传应用参考: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5#%E4%B8%8A%E4%BC%A0%E5%BA%94%E7%94%A8%E6%96%87%E4%BB%B6

例如:上传文件地址internal://cache/xx.jpg,这里对应的是沙箱目录haps/entry/cache下的xx.jpg

下面是一个将文件存到cache目录下的demo:

import { BusinessError } from '@kit.BasicServicesKit';
import fs from '@ohos.file.fs';
import picker from '@ohos.file.picker';
import { common } from '@kit.AbilityKit';

@Entry @Component struct Index { @State message: string = ‘Hello World’; async photoPick() { try { let context = getContext(this) as common.Context; let pathDir = getContext().cacheDir; let PhotoSelectOptions = new picker.PhotoSelectOptions(); PhotoSelectOptions.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE; PhotoSelectOptions.maxSelectNumber = 5; let photoPicker = new picker.PhotoViewPicker(); photoPicker.select(PhotoSelectOptions) .then(async (PhotoSelectResult: picker.PhotoSelectResult) => { console.info('PhotoViewPicker.select successfully, PhotoSelectResult uri: ’ + JSON.stringify(PhotoSelectResult)); let file1 = fs.openSync(PhotoSelectResult.photoUris[0]) fs.copyFileSync(file1.fd, pathDir+/${file1.name}) console.log(“pathDir”+pathDir) let file2 = fs.openSync(pathDir+/${file1.name}, fs.OpenMode.READ_WRITE) console.log(file fd ==> ${file2.fd} | file path ==> ${file2.path}) // fs.closeSync(file1) // fs.closeSync(file2) }).catch((err: BusinessError) => { console.error('PhotoViewPicker.select failed with err: ’ + JSON.stringify(err)); }); } catch (error) { let err: BusinessError = error as BusinessError; console.error('PhotoViewPicker failed with err: ’ + JSON.stringify(err)); } }

build() { Row() { Column() { Button(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(async () => { this.photoPick() }) } .width(‘100%’) } .height(‘100%’) } }

更多关于HarmonyOS 鸿蒙Next request.uploadFile是否只能上传cache目录下的文件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next request.uploadFile功能范围

HarmonyOS的request.uploadFile方法并不局限于只能上传cache目录下的文件。此方法设计用于上传本地存储中的文件,只要文件路径有效且应用有权限访问该路径,理论上可以上传任意位置的文件。

在使用request.uploadFile时,关键在于确保提供的文件路径是正确的,并且应用已获得读取该文件的权限。例如,如果文件位于应用的私有存储中,应用默认拥有读取权限;若文件位于公共存储,则需要申请并获取相应的存储访问权限。

此外,考虑到安全性和隐私保护,HarmonyOS对文件访问有严格的权限控制。开发者需确保在调用request.uploadFile前,已正确声明并获取了必要的权限。

总之,request.uploadFile不仅限于cache目录,而是可以上传任何应用有权限访问的本地文件。请检查文件路径和权限设置,确保它们正确无误。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部