Эй, после попытки загрузить Excel с сервера ниже, я нашел очень простое решение. Но на стороне API они просто прочитают путь и отправят файлы.Как я могу различить тип файла?
Если файлы сервера находятся в каталоге вашего проекта или на сервере, мы хотели бы загрузить файл Excel или любой другой файл напрямую.Добавлена реализация ниже, которая работает только для Excel.
API (.net):
public ActionResult Download()
{
string fileName = WebConfigurationManager.AppSettings["filename"];
var filePath = System.Web.HttpContext.Current.Server.MapPath("~/" + fileName);
if (System.IO.File.Exists(filePath))
{
byte[] fileBytes = System.IO.File.ReadAllBytes(filePath);
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
else
{
var response = new WebServiceStatus()
{
code = -1,
data = null,
message = "File is Not available"
};
var data = JsonConvert.SerializeObject(response);
return HandleTrivialHttpRequests(data);
}
}
Угловой V7 // Декларация
headers: HttpHeaders;
options: any;
// Конструктор или вы можете иметь для конкретного метода
this.headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.options = {
observe: 'response',
headers: this.headers,
responseType: 'arraybuffer'
};
// Запрос на обслуживание:
this.httpClient.post('http://localhost:8080/api/report', this.data,
this.option)
.pipe(
catchError(err => this.handleError(err))
).subscribe(response => {
Helper.exportExelFile(response, 'FileName');
});
// В компоненте или во вспомогательной функции в одномкласс, я использовал вспомогательную функцию, которую можно использовать и в других местах
import * as FileSaver from 'file-saver';
function exportExelFile(data, filename) {
const blobValue = new Blob([data['body']], {
type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
});
FileSaver.saveAs(blobValue, filename + '.' + FileType.EXCEL);
}
export const Helper = {
exportExelFile
};