Я следил за учебником here, о том, как загружать файлы с помощью Angular2. Тем не менее, когда я пытаюсь реализовать код в своем проекте, результатом в моей консоли является только содержимое html страницы, а не ответ JSON, который предполагается отправлять через мой запрос POST на моем заднем конце (ядро asp.net). Под вкладкой в сети это, кажется, делает POST правильным адресом, поэтому я не знаю, почему я получаю html-документ вместо данных ответа. Кто-нибудь знает, почему?Загрузить файл с Angular2
upload.html
<h2>Upload</h2>
<input type="file" (change)="fileChangeEvent($event)" placeholder="Upload file..." />
<button type="button" (click)="upload()">Upload</button>
upload.ts
import * as ng from '@angular/core';
@ng.Component({
selector: 'upload',
template: require('./upload.html')
})
export class Upload {
filesToUpload: Array<File>;
constructor() {
this.filesToUpload = [];
}
upload() {
this.makeFileRequest("http://localhost:5000/api/SampleData/uploadFile", [], this.filesToUpload).then((result) => {
console.log(result);
}, (error) => {
console.error(error);
});
}
fileChangeEvent(fileInput: any){
this.filesToUpload = <Array<File>> fileInput.target.files;
}
makeFileRequest(url: string, params: Array<string>, files: Array<File>) {
return new Promise((resolve, reject) => {
var formData: any = new FormData();
var xhr = new XMLHttpRequest();
for(var i = 0; i < files.length; i++) {
formData.append("uploads[]", files[i], files[i].name);
}
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
resolve(JSON.parse(xhr.response));
} else {
reject(xhr.response);
}
}
}
SampleData.cs
[HttpPost]
public IActionResult uploadFile()
{
var files = Request.Form.Files;
return Json("Working ? ");
}
Эй, спасибо за повтор. Однако im получая ошибку сравнения в файлах строки var = Request.Files; ..... «HttpRequest» не содержит определения для «Файлы» и никакого метода расширения «Файлы», принимающие первый аргумент типа «HttpRequest», могут быть найдены (вам не хватает директивы using или ссылки на сборку?) [netcoreapp1.0] – John
Вы используете класс контроллера asp.net? – DNRN
Да. с использованием системы; с использованием System.Collections.Generic; с использованием System.Linq; с использованием System.Threading.Tasks; с использованием Microsoft.AspNetCore.Mvc; с использованием Microsoft.AspNetCore.Http; пространства имен Testing.Controllers { [Маршрут ("апи/[контроллер]")] общественного класса SampleDataController: Контроллер – John