簡體   English   中英

將 ByteArrayResource(從 java)接收到 Blob(到 javascript)

[英]Receiving ByteArrayResource( from java) into Blob (into javascript)

對我的問題有任何幫助將不勝感激。 這是上下文:

我目前正在從 java RestControler 發送一個 zip 文件:

public ResponseEntity<Resource> download(@RequestBody ProjectDTO projectDTO) {
    Project project = ProjectDTO.toProject(projectDTO);
    byte[] out = initApplicationService.download(project);
    ByteArrayResource resource = new ByteArrayResource(out);
    return ResponseEntity
      .ok()
      .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + getZipFilename(project))
      .contentType(MediaType.parseMediaType("application/octet-stream"))
      .contentLength(out.length)
      .header("X-Suggested-Filename", getZipFilename(project))
      .body(resource);
  }

這非常有效,因為我可以通過 swagger 下載它。

但是在普通的 javascript 前面,我不知道我錯過了什么:主要的:

const download = async (): Promise<void> => {
      if (project.value.folder !== '') {
        await projectService
          .download(toProject(project.value))
          .then(response => {
              const url = window.URL.createObjectURL(new Blob([response],{type:'application/octet-stream'}));
              const link = document.createElement('a');
              link.href = url;
              link.setAttribute('download', project.value.baseName + '.zip');
              document.body.appendChild(link);
              link.click();
          })
          .catch(error => logger.error('Downloading project failed', error));
      }
    };

二次調用:

async download(project: Project): Promise<ArrayBuffer> {
    const restProject: RestProject = toRestProject(project);
    return this.axiosHttp
      .post<ArrayBuffer, RestProject>('api/projects/download', restProject)
      .then(response => new Uint8Array(response.data));
  }

它很好地下載了 zip 但很好地打開它我收到以下錯誤:“存檔加載期間發生錯誤”感謝任何幫助:)

我在 post 請求中添加了 responseType,我還刪除了 Uint8Array 轉換,它工作正常。

return this.axiosHttp
      .post<ArrayBuffer,RestProject>('api/projects/download', restProject,{ responseType: 'blob' })
      .then(response => response.data);

我想當接收數據時,axios 需要知道將要以正確格式正確轉換的內容。 在飛行中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM