HarmonyOS 鸿蒙Next文件上传接口数据返回信息

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next文件上传接口数据返回信息

在使用request.uploadFile(context, uploadConfig) 文件上传是只能监听到uploadTask.off(‘complete’, upCompleteCallback1);文件是否上传成功的信息,无法获取服务端处理文件按后返回的字段信息。
请问如果需要获取到服务端处理文件后返回的数据应该怎么操作?
 

2 回复

可以尝试订阅服务端请求信息,获取的headers中包含有header和body,参考文档:

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

demo如下:

import { BusinessError, request } from '[@kit](/user/kit).BasicServicesKit';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct UploadFile {
  [@State](/user/State) message: string = 'Hello World';
  upload() {
    let uploadConfig: request.UploadConfig = {
      url: 'http://www.example.com', // 需要手动将 url 替换为真实服务器的 HTTP 协议地址
      header: { 'Accept': '/' },
      method: "POST",
      files: [{
        filename: "test",
        name: "test",
        uri: "internal://cache/test.jpg",
        type: "jpg"
      }],
      data: [{ name: "name123", value: "123" }],
    };
    try {
      request.uploadFile(getContext(), uploadConfig).then((data: request.UploadTask) => {
        let uploadTask = data;
        uploadTask.on('complete', (taskStates: Array<request.TaskState>) => {
          for (let i = 0; i < taskStates.length; i++) {
            console.info(upload complete taskState: ${JSON.stringify(taskStates[i])});
          }
        });
        uploadTask.on('headerReceive',(header:Object)=>{
          console.log('###headerReceive',JSON.stringify(header))
          if(header){
            let body:object = JSON.parse(JSON.stringify(header)).body
            console.log('=====body',JSON.stringify(body))
          }
        })
      }).catch((err: BusinessError) => {
        console.error(Failed to request the upload. Code: ${err.code}, message: ${err.message});
      });
    } catch (err) {
      console.error(Failed to request the upload. err: ${JSON.stringify(err)});
    }
  }
  build() {
    Column() {
      Button('上传').onClick(() => {
        console.log('123456')
        this.upload()
      })
    }.width('100%').height('100%').justifyContent(FlexAlign.Center)
  }
}

针对HarmonyOS鸿蒙Next文件上传接口数据返回信息的问题,以下是一些专业解答:

在HarmonyOS鸿蒙Next系统中,文件上传后获取返回数据的方法主要依赖于request.uploadFile方法及其相关的事件监听。具体步骤如下:

  1. 使用request.uploadFile方法上传文件,并获取返回的uploadTask对象。
  2. 通过uploadTask.on('headerReceive', callback)监听headerReceive事件。其中,callback函数将接收后端返回的响应头信息。
  3. callback函数中,解析响应头中的body字段(或其他相关字段),以获取后端返回的具体数据。

请确保应用已添加必要的网络权限,并且服务器地址和请求头信息配置正确。如果无法获取返回数据,可能涉及接口定义、网络问题、权限设置、后端服务状态、日志与异常捕获以及版本兼容性等多个层面的原因。

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

回到顶部