如何在Angular中访问HTTP事件正文?

时间:2019-06-27 09:05:37

标签: angular

我在代码中使用Angular File上传。我正在使用HTTP事件来跟踪文件上传的进度。之后,我想将从响应中接收到的数据映射到接口,但是我无法访问响应的正文。

这是我的代码,用于跟踪上传进度并获取响应的正文:

public async UploadRcptList() {
    for (const droppedFile of this.fileUploadManager) {

      // Is it a file?
      if (droppedFile.file.fileEntry.isFile) {
        const fileEntry = droppedFile.file.fileEntry as FileSystemFileEntry;

        fileEntry.file((file: File) => {
          this.Uploader.recipientUpload(file, this.chosenValue).subscribe(
            event => {
              if (event.type === HttpEventType.UploadProgress) {
                this.fileUploadManager[0].progress = ((event.loaded / event.total) * 100);
              }
              if (event.type === HttpEventType.Response) {
                console.log(event);
                console.log("We have response:" + event.body);
                this.Uploader.setLists(event.body as Mixed);
                //if(count ==1)
                this.emptyFilesArray()
                //else count--;
              }
            }
          )
        });
      }

      else {
        const fileEntry = droppedFile.file.fileEntry as FileSystemDirectoryEntry;
        console.log(droppedFile.file.relativePath, fileEntry);
      }
    }

在这里,当我尝试记录事件时,我得到了整个响应,它是一个看起来像这样的JSON:

{
    "status": "SUCCESS",
    "data": {
        "attachmentList": [
            {
               ...
            }
        ],
        "recipientList": [
            {
                ...
            },
        ]
    },
    "errorMsg": null
}

但是,当我尝试记录event.body时,我得到了[object Object]。如何访问响应正文中的“数据”属性?

这是我的服务代码:

public recipientUpload(file: File, type: string) {
    const details = {
       ...
    }
    formData.append('reqjson', JSON.stringify(details))
    formData.append('file', file);

    return this.http.request(new HttpRequest('POST', 'https://xyz.abc/fileUpload', formData, { reportProgress: true }));
}

如果我没记错的话,event.body应该给我整个JSON响应,对吗?我尝试访问event.body.data,但遇到错误消息,表明event.body上不存在数据。如何访问响应中的“数据”属性?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用

 var myJSON = JSON.stringify(event);
 console.log(myJSON.yourfield);