У меня есть угловое приложение, в котором мне нужно загрузить изображение на сервер (узел сервера).Я пробовал разные методы, которые я нашел в Интернете, но у меня одна и та же проблема со всеми из них: сервер не получает изображение.Если я использую простую форму HTML, сервер работает безупречно, я даже изменил библиотеку сервера с multer на express-upload, но проблема сохраняется, поэтому я почти уверен, что это угловая проблема.
HTML
<form [formGroup]="imageForm" *ngIf="state == 2" (ngSubmit)="uploadImage()">
<mat-form-field appearance="outline">
<ngx-mat-file-input formControlName="image" placeholder="Imagen" accept="image/*"></ngx-mat-file-input>
<mat-icon matSuffix color="primary">folder_open</mat-icon>
<mat-error *ngIf="image.errors && (image.dirty || image.touched)">{{getImageMessage()}}</mat-error>
</mat-form-field>
<div>
<button mat-stroked-button color="primary" (click)="closeModal()">Cancelar</button>
<button mat-flat-button color="primary" [disabled]="image.errors" type="submit">Aceptar</button>
</div>
</form>
TS (упрощенно)
import { Component, OnInit } from '@angular/core';
import { MatDialogRef } from '@angular/material';
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { FileValidator } from 'ngx-material-file-input';
import { HttpClient, HttpRequest, HttpEvent, HttpEventType, HttpHeaders } from '@angular/common/http';
import { WriteComponent } from './../../write/write.component';
import { RequestsService } from './../../services/requests.service';
@Component({
selector: 'app-upload-image',
templateUrl: './upload-image.component.html',
styleUrls: ['./upload-image.component.scss']
})
export class UploadImageComponent implements OnInit {
private uploadImageURL = '/ajax/upload/image/';
private state = 0;
private urlForm: FormGroup;
private imageForm: FormGroup;
private regexUrl = 'https?://.+';
private image: FormControl = new FormControl('', [Validators.required, FileValidator.maxContentSize(5000000)]); // 5mb
constructor(private dialogRef: MatDialogRef<WriteComponent>, private http: HttpClient) { }
ngOnInit() {
this.imageForm = new FormGroup({
image: this.image
});
}
private uploadImage() {
const formData = new FormData();
formData.append('image', this.imageForm.get('image').value);
this.http.post(this.uploadImageURL, formData).subscribe(output => {
console.log('File transfered');
});
}
}
Запрос браузера Данные формы: Изображение: [объект объекта], может быть, в этом проблема?
Всервер я все еще получаю req.files undefined