フォームにファイルをアップロードしています。このアップロードされたファイルと他のいくつかのフォームフィールドを使用して、バックエンドへのポストリクエストを作成する必要もあります。
以下は私のコードです:
fileChange(event) {
const fileList: FileList = event.target.files;
if (fileList.length > 0) {
this.file = fileList[0];
this.form.get('file_upload').setValue(this.file);
}
}
onClick(){
const val = this.form.value;
const testData = {
'file_upload': this.file,
'id': val.id,
'name' : val.name,
'code': val.code,
};
this.http.post('https://url', testData,
.subscribe(
response => {
console.log(response);
});
}
アップロードされたファイルを除くすべてのフィールド値がバックエンドに送信されます。アップロードしたファイルとフォームフィールドをバックエンドに送信するにはどうすればよいですか?追加情報が必要かどうかをお知らせください。
あなたは単純なパスファイルデータを試しています
'file_upload': this.file,
これは間違っています
ファイルをアップロードする方法はたくさんありますが、私はFormDataを使用するのが好きです。
let testData:FormData = new FormData();
testData.append('file_upload', this.file, this.file.name);
this.http.post('https://url', testData).subscribe(response => {
console.log(response);
});
詳細はこちら Angleでのファイルのアップロード?
サーバーでファイルのアップロードを適切に処理していると仮定します(通常、multerやbusboyなどのあるタイプのnpmパッケージ)。
マルチパートフォームデータを処理するには、angular側でnpmパッケージを使用する必要があります。
ng-2-file-uploadは、その多くの機能の1つです。