将 excel 文件导入到 angular - "Unexpected token P in JSON at position 0" 错误

Import excel file to angular - "Unexpected token P in JSON at position 0" error

我在 c# 中使用 webapi 项目并且 angular 我在控制器中实现了一个导出 excel 文件的功能,并在 angular 服务中实现了另一个功能来导入此 excel.

C# 函数非常有用,它创建了一个新的 excel,并将其保存到某个路径中。

问题发生在angular: Unexpected token P in JSON at position 0

这是我的代码:

C# 控制器:

        [HttpGet]
        [Route("downloadProducts/{userID}")]
        public HttpResponseMessage DownloadProducts(int userID)
        {
                var pathToExcel=WriteExcel.GetPathToProducts(userID);
                var buffer = File.ReadAllBytes(pathToExcel);
                var stream = new MemoryStream(buffer);
                var result = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(stream.ToArray())
                };
                result.Content.Headers.ContentDisposition =
                    new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
                    {
                        FileName = "products.xlsx"
                    };
                result.Content.Headers.ContentType =
                    new MediaTypeHeaderValue("application/octet-stream");

                return result;
        }

Angular 服务:

  downloadFile (userID:number):Observable<Blob>{
    return this.http.get<Blob>(`${this.url}/downloadProducts/${userID}`);
 }

Componenet.TS

const EXCEL_TYPE = 'application/octet-stream';
  this.productsService.downloadloadFile(this.user.userID).subscribe(data=>{
        var file = new Blob([data], { type: EXCEL_TYPE });
        this.href =   window.URL.createObjectURL(file);
        setTimeout(() => {
          console.log(this.href);
        }, 500);
        window.open(this.href);
})

我应该修复什么?

非常感谢。

这里在上面的函数中使用 MIME 类型 text/csv 而不是 application/octet-stream 它可以使用 . xlsx 扩展名。

不要将其转换为 Blob 尝试没有它。

 downloadFile (userID:number):Observable<any>{
    return this.http.get<any>(`${this.url}/downloadProducts/${userID}`);
 }