HarmonyOS 文件上传无法解析文件地址

//将文件拷贝入沙箱中
copyFileToSandBox() : string[]{
  let files : string[] = [];
  let cachDir = this.context.cacheDir;
  this.imgArr.forEach((uri) => {
    let file = fs.openSync(uri,fs.OpenMode.READ_ONLY);
    let name = file.name;
    let dest = fs.openSync(cachDir + "/" + name,fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    fs.copyFileSync(file.fd,dest.fd);
    fs.closeSync(file.fd);
    let destUri = dest.path;
    fs.closeSync(dest.fd);
    files.push(destUri);
  })
  return files;
}
//将文件上传服务器
uploadPics(){
  if (this.imgArr && this.imgArr.length > 0 ) {
    let fileUris = this.copyFileToSandBox();
    let files: Array<request.File> = []
    for (let i = 0; i < fileUris.length; i++) {
      let filename = fileUris[i].substring(fileUris[i].lastIndexOf("/") + 1);
      let name = filename.substring(0,filename.indexOf("."));
      let fileType = filename.substring(filename.indexOf(".") + 1);
      console.log("filename=" + filename + ";name=" + name + "type:" + fileType);
      files.push({
        filename: filename,
        name: name,
        uri: "internal:/" + fileUris[i],
        type: fileType
      })
    };
    let header = new Map<Object, string>();
    header.set("Content-type","application/x-www-form-urlencoded")
    let data : Array<request.RequestData> = [{name:"serviceCode",value:"handheld_bus_file"},{name:"twoServiceCode",value:"feedback"}];
    let uploadConfig: request.UploadConfig = {
      url: UrlConst.ROOT_URL + UrlConst.FILE_UPLOAD_URL,
      header: header,
      method: 'POST',
      files: files,
      data: data
    }
    try {
      request.uploadFile(getContext(this), uploadConfig)
        .then((uploadTask: request.UploadTask) => {
          uploadTask.on('complete', (taskStates: Array<request.TaskState>) => {
            for (let i = 0; i < taskStates.length; i++) {
              console.info(`upload complete taskState: ${JSON.stringify(taskStates[i])}`);
            }
          });
        })
        .catch((err: BusinessError) => {
          console.error(`Invoke uploadFile failed, code is ${err.code}, message is ${err.message}`);
        })
    } catch (error) {
      let err: BusinessError = error as BusinessError;
      console.error(`Invoke uploadFile failed, code is ${err.code}, message is ${err.message}`);
    }
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.

上述代码中this.imgArr为从相册中选择的图片的uri数组,执行该代码后报错

Invoke uploadFile failed, code is 401, message is the parameters check fails Parameter verification failed, GetInternalPath failed, filePath is not valid

HarmonyOS
2024-12-24 14:25:19
807浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
shlp

1.header.set(“Content-type”,“multipart/form-data”)

2.uri格式 uri: “internal:/” + ‘/cache/’+filename,

详见https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-request-V5#file

分享
微博
QQ
微信
回复
2024-12-24 16:13:29


相关问题
HarmonyOS 录音上传文件
894浏览 • 1回复 待解决
HarmonyOS 上传文件问题
778浏览 • 1回复 待解决
HarmonyOS上传文件问题
1233浏览 • 1回复 待解决
HarmonyOS 如何上传文件
948浏览 • 1回复 待解决
HarmonyOS 上传文件的demo
862浏览 • 1回复 待解决
HarmonyOS文件上传怎么写
1411浏览 • 1回复 待解决
HarmonyOS 地址解析问题
727浏览 • 1回复 待解决
HarmonyOS 文件上传报错
1069浏览 • 1回复 待解决
HarmonyOS web组件上传文件
961浏览 • 1回复 待解决
HarmonyOS 上传文件相关Demo
1381浏览 • 1回复 待解决
HarmonyOS axios上传文件失败
852浏览 • 1回复 待解决
HarmonyOS 如何解析证书文件
879浏览 • 1回复 待解决
HarmonyOS 如何解析zip文件
665浏览 • 1回复 待解决
HarmonyOS 文件管理查找pdf文件上传
919浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
898浏览 • 1回复 待解决
HarmonyOS 文件上传HEADER如何配置
647浏览 • 1回复 待解决
HarmonyOS request文件上传问题
789浏览 • 1回复 待解决