Не могу отправить файл с помощью Ajax, используя FormData в angular 7 - PullRequest
0 голосов
/ 29 марта 2019

Я использую ASP.NET Core в качестве серверной части и пытаюсь отправить файл, используя ajax в angular 7. Я создал объект класса FormData и добавил файл к этому объекту с помощью метода добавления. но я получу ошибки при попытке опубликовать API:

Error: {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":415,"statusText":"Unsupported Media Type","url":"https://localhost:44319/Api/TimeLinePost","ok":false,"name":"HttpErrorResponse","message":"Http failure response for https://localhost:44319/Api/TimeLinePost: 415 Unsupported Media Type","error":{"type":"https://tools.ietf.org/html/rfc7231#section-6.5.13","title":"Unsupported Media Type","status":415,"traceId":"0HLLKF4AT3QD7:00000005"}}

Вот мой угловой код:

export class StatusComponent {
  selectedImage: File = null;
  constructor(private http: HttpClient, @Inject('BASE_URL') private baseUrl: string) {

  }
  onImageSelected(event) {
    this.selectedImage = <File>event.target.files[0];
  }
  update() {
    const fd = new FormData();
    fd.append('image', this.selectedImage, this.selectedImage.name);
    this.http.post<boolean>(this.baseUrl + 'Api/TimeLinePost', fd).subscribe(
      result => {
      },
      error => {
        alert('Ops! Somthing went wrong!');
        console.log(`Error: ${JSON.stringify(error)}`)
      }
    )
  }
}

вот мой API:

[HttpPost]
public bool Post(IFormFile image)
{ 
    return true;
}

1 Ответ

0 голосов
/ 01 апреля 2019

Это можно решить двумя способами.

1) Добавьте атрибут [FromForm] к параметру действия (как ответили в на этот вопрос ):

[HttpPost]
public bool Post([FromForm] IFormFile image)
{ 
    return true;
}

2) Добавьте SetCompatibilityVersion(CompatibilityVersion.Version_2_2) в конфигурацию. Это решит проблемы связывания автоматически:

public void ConfigureServices(IServiceCollection services)
{
   services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
...