HarmonyOS 鸿蒙Next 上传文件后,如何接受后端返回数据

发布于 1周前 作者 bupafengyu 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:上传文件后,如何接受后端返回数据

问题描述

request.uploadFile(context, uploadConfig) 上传文件后,如何处理后端返回数据?

3 回复

解决方案

请参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-request-V5

可以参考开启on(‘headerReceive’),其中响应体的 header 和 body 都会在这个 header object 里存放。

HarmonyOS 鸿蒙Next 上传文件后, 接受后端返回数据参考下面代码:

let headerCallback = (headers) => {   
    console.info("upOnHeader headers:" + JSON.stringify(headers)
);
uploadTask.on('headerReceive', headerCallback);

HarmonyOS 鸿蒙Next 上传文件后,如何接受后端返回数据完整代码:

  doUpload(newDir: string) {
    let uri = "internal://cache/" + newDir.split("cache/")[1]
    console.log("uri:" + uri)
    let uploadConfig: request.UploadConfig = {
      url: 'https://xiaomi.itying.com/imgupload', //需要手动替换为真实服务器地址
      header: { 'Accept': '*/*' },
      method: "POST",
      files: [{
        filename: newDir.split("cache/")[1],
        name: "test",
        uri: uri,
        type: "jpg"
      }],
      data: [{ name: "uid", value: "123" }], //需要额外post的数据
    };
    try {

        request.uploadFile(getContext(this), uploadConfig).then((uploadTask) => {
          uploadTask.on("progress", (uploadedSize, totalSize) => {
            this.message = "upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize
          })

          uploadTask.on('headerReceive', (headers)=>{
            console.log(headers["body"])   //{"success":"true","path":"public/upload/h0wncqAQLRj6wcMLcQnC8HFE.jpg"}
          });
        }).catch((err: Error) => {
          this.message = 'Failed to request the upload. Cause: ' + JSON.stringify(err)
        });
      }
      catch(err) {
        this.message = 'err.code : ' + err.code + ', err.message : ' + err.message
      }
    }
回到顶部