私は今この問題を抱えていましたが、どこでも修正を見つけることはできません。私がしたいことは、ユーザーがプロファイル上でアバターを更新できるようにすることです。しかし、ノード・サーバーにファイルを渡そうとすると、formDataフィールドは空です。私は他人から与えられた複数の解決策を試してきましたが、どちらも働いていませんでした。ここでangleとnode.jsを使った画像アップロード
は私のプロフィールのHTMLコンポーネントである:ここで
<form [formGroup]="form" >
<input type="file" id="selectFile" name="selectFile" [disabled]="uploading" formControlName="selectFile" (change)="uploadImage($event)" >
</form>
は私のプロフィールtypescriptですコンポーネントです:
uploadImage(evt) {
this.createAuthenticationHeaders();
const files = evt.target.files;
console.log('Uploading file...', files);
if (files.length > 0) {
let file;
let formData = new FormData();
for (let i = 0; i < files.length; i++) {
file = files[i];
formData.append('selectFile', file);
}
console.log(formData);
this.uploadService.updateImage(formData.get('selectFile')).subscribe(res => res.json());
}
}
ここに私のアップロードサービスされます。ここで、その要求
updateImage(formdata) {
let url = this.baseUrl + '/authentication/profile/avatar/update';
console.log(formdata);
return this.http.post(url, formdata).catch(this.errorHandler);
}
ここにはあります処理する必要があります:
router.post('/profile/avatar/update', (req, res) => {
console.log(req.params);
User.findOne({ _id: req.decoded.userId }).select('username email').exec((err, user) => {
if (err) {
res.json({ success: false, message: err });
} else {
if (!user) {
res.json({ success: false, message: 'Could not find user' });
} else {
if (fs.existsSync('C:/Users/Jake/Desktop/apis/client/src/assets/uploads/profiles/' + user.username + user.username + '/avatar.png')) {
res.json({ success: true, message: '../../assets/uploads/profiles/' + user.username + user.username + '/avatar.png' });
} else {
res.json({ success: false, message: '../../assets/uploads/profiles/default/default.jpg' });
}
}
}
})
});
ただし、プロファイルのtypescriptコンポーネントで問題が発生しています。 formData.get( 'selectFile')を使用しないと、formDataフィールドは空であり、なぜ満たされていないのかわかりません。
返信いただきありがとうございます。