【发布时间】:2021-01-19 17:30:37
【问题描述】:
我是 Angular 的新手,我正在尝试在单击按钮时创建一个下载链接以下载 doc 文件。该文件已成功下载,但里面的内容是“[object Object]”。文件路径在我的 webroot 中,我正在像这样访问文件:
[Route("api/[Controller]")]
[ApiController]
public class DownloadController : Controller
{
private readonly IWebHostEnvironment _env;
public DownloadController(IWebHostEnvironment env)
{
_env = env;
}
[HttpGet]
public async Task<IActionResult> Download()
{
string filePath = Path.Combine(_env.WebRootPath, "Image\\CV.doc");
using MemoryStream memorystream = new MemoryStream();
using (var stream = new FileStream(filePath, FileMode.Open))
{
await stream.CopyToAsync(memorystream);
}
memorystream.Position = 0;
return File(memorystream, "application/msword", "CV.doc");
}
}
我的共享服务.ts。我也将观察更改为“身体”。
import { Injectable } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class SharedService {
cvFilePathURL = "https://localhost:44346/api/Download";
constructor(private http: HttpClient) { }
getCV(): Observable<any> {
return this.http.get(this.cvFilePathURL, {
observe: 'response',
responseType: 'text'
});
}
}
这是我的 componenet.ts
import { Component } from '@angular/core';
import { SharedService } from 'src/app/shared.service';
@Component({
selector: 'app-nav-menu',
templateUrl: './nav-menu.component.html',
styleUrls: ['./nav-menu.component.css']
})
export class NavMenuComponent {
constructor(private service: SharedService) { }
isExpanded = false;
collapse() {
this.isExpanded = false;
}
toggle() {
this.isExpanded = !this.isExpanded;
}
public Download(): void {
this.service.getCV().subscribe((data) => {
var newBlob = new Blob([data], { type: "application/msword" });
//For Internet Explorer
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
return window.navigator.msSaveOrOpenBlob(newBlob);
}
//For other browsers:
//Create a link pointing to the ObjectURL containing the blob.
const mainData = window.URL.createObjectURL(newBlob);
var link = document.createElement('a');
link.href = mainData;
link.download = "CV.doc";
link.click();;
});
}
}
目标框架 - asp.net core 3.1 角 Cli - 11.0.6 更新: 因此,我设法下载了具有 [objects Objects] 以外的实际内容的文件。但是,该文件充满了特殊字符,长达 206 页。原始文件只有 2 页长。
【问题讨论】:
标签: javascript asp.net angular typescript