Код для загрузки файла (всех типов) в angular 6 и .Net core web API 2.1 не работает - PullRequest
0 голосов
/ 20 марта 2019

Пробовал путем загрузки файла изображения JPEG.Он успешно загружается, но не открывается.Getting this issue

Проблема связана с файлами любого типа, будь то doc, xl, текст или что-то еще.

Вот мой код .Net Core Web APIis ->

[HttpGet]
[Route("documentdownloaddetail1/{documentId}")]
public async Task<IActionResult> GetDocumentDetailById1(Guid documentId) {
  DocumentResponseModel model = _documentDataService.GetDocumentDetailById(documentId);

  FileStream stream = _documentDataService.GetFileStream(documentId, model.FileStorageId, model.FileName);
  if(stream == null)
    return NotFound();

  return File(stream, "application/octet-stream"); // returns a FileStreamResult
}

вот мой угловой код 6 ->

 // Download document.  

public downloadDocument (docItem: any) {
this.customerSupportService.getDocumentDetailById (docItem.uid)
.subscribe (
blob => {
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
window.navigator.msSaveOrOpenBlob (blob, docItem.name);
} еще{
var a = document.createElement ('a');
document.body.appendChild (a);
a.href = URL.createObjectURL (blob);
a.download = docItem.name;
document.body.appendChild (a);
a.click ();
document.body.removeChild (a);
}
}
);
}

И мой метод http get->

getDownload(url: string, actionMethodName: string): Observable<Blob> {
    let httpOptions = {
        headers: new HttpHeaders({
            'responseType': 'ResponseContentType.blob'
                        }) 
    };

    return this.http.get<Blob>(url, {responseType: 'blob' as 'json'})
    .pipe(map((res: any) => {
        debugger;  
        return new Blob([res], { 
           type: 'application/octet-stream'
          })
    }));

    return this.http.get(url, {responseType: 'blob'});
}
...