HarmonyOS 文件上传报错

调用 request.uploadFile 的时候报错

Error: the parameters check fails   this is fail path@431a5ed1

代码如下:

uploadFile() {
  // 上传任务配置项
  let header = new Map<Object, string>();
  header.set('partner_id', this.partnerId);
  header.set('user_number', this.userNumber);
  let files: Array<request.File> = [
    { filename: 'wenzai_logs', name: 'wenzai_logs', uri: 'internal:/data/storage/el2/base/haps/entry/files/wenzai_logs.zip' , type: 'zip' }
  ]
  let requestData: Array<request.RequestData> = [{ name: 'name', value: 'value' }];
  let uploadConfig: request.UploadConfig = {
    url: API_HOST_WEB[this.deployType] + UP_LODE_LOG_FILE,
    header: header,
    method: 'POST',
    files: files,
    data: requestData
  }
  try {
    request.uploadFile(context, 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}`);
  }
}

请帮忙看下哪个地方写错了

HarmonyOS
3天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

根据文档当前能力如此,当前只支持上传cache目录下的文件, 非cache目录下上传下载解决方案: 将公共路径的文件(picker选择),拷贝至沙箱路径中,可完成上传。这边提供一个demo参考一下

Demo:

pickerPhoto() {
  try {
    let options = new picker.PhotoSelectOptions();
    options.MIMEType = picker.PhotoViewMIMETypes.IMAGE_TYPE;
    options.maxSelectNumber = 1;
    let p = new picker.PhotoViewPicker();
    p.select(options).then((res: picker.PhotoSelectResult) => {
      console.info("tag photo is uri" + res.photoUris[0])
      this.saveFile(res.photoUris[0]);
    })
  } catch (e) {
    console.error("tag select tailed..")
  }
}

async
saveFile(uri:
string
)
{ 
  // 将公共目录的文件,拷贝至沙箱路径 
  let destDist = getContext(this).cacheDir + "/test.png";
  let src = fs.openSync(uri, fs.OpenMode.READ_ONLY);
  let dst = fs.openSync(destDist, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  fs.copyFileSync(src.fd, dst.fd);
}

应用文件上传下载,可以参考最新更新的文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-file-upload-download-V5

分享
微博
QQ
微信
回复
3天前
相关问题
HarmonyOS上传报如下错误
382浏览 • 1回复 待解决
HarmonyOS 如何上传文件
154浏览 • 1回复 待解决
HarmonyOS上传文件问题
617浏览 • 1回复 待解决
HarmonyOS web组件上传文件
325浏览 • 1回复 待解决
HarmonyOS 上传文件相关Demo
555浏览 • 1回复 待解决
HarmonyOS 上传软件包报错991
30浏览 • 1回复 待解决
HarmonyOS 录音上传文件
104浏览 • 1回复 待解决
HarmonyOS 上传文件问题
85浏览 • 1回复 待解决
HarmonyOS日志文件上传问题
601浏览 • 1回复 待解决
HarmonyOS 文件上传无法解析文件地址
88浏览 • 1回复 待解决
HarmonyOS 文件管理查找pdf文件上传
59浏览 • 1回复 待解决
HarmonyOS 上传文件的demo
20浏览 • 1回复 待解决
HarmonyOS文件上传怎么写
564浏览 • 1回复 待解决
使用FilePick上传uri失败,报错201
1803浏览 • 1回复 待解决
HarmonyOS web上传文件和图片
287浏览 • 1回复 待解决
HarmonyOS 文件上传 & 资源读取问题
594浏览 • 1回复 待解决
HarmonyOS 文件上传入参设置
68浏览 • 1回复 待解决
HarmonyOS 文件上传接口数据返回信息
57浏览 • 1回复 待解决