【发布时间】:2018-03-24 23:26:17
【问题描述】:
在 Angular 5 中,我通过我的服务从 mongodb 获取 hotelgallery 的图像。所以基本上我得到的数据是这样的
{
fieldname: "hotelgallery",
originalname: "e.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1521139307413.jpg"
mimetype : "image/jpeg"
path : "public/1521139307413.jpg"
size : 66474
}
{
fieldname: "hotelgallery",
originalname: "e.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1521139307413.jpg"
mimetype : "image/jpeg"
path : "public/1521139307413.jpg"
size : 66474
}
{
fieldname: "hotelgallery",
originalname: "j.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "1526753678390.jpg"
mimetype : "image/jpeg"
path : "public/1526753678390.jpg"
size : 66470
}
{
fieldname: "hotelgallery",
originalname: "k.jpg",
encoding: "7bit",
mimetype: "image/jpeg",
destination: "./public/",
encoding : "7bit",
filename : "7865456789413.jpg"
mimetype : "image/jpeg"
path : "public/7865456789413.jpg"
size : 66300
}
现在我想再次将这些数据附加到 FormData 但它不起作用。
到目前为止我所做的代码
export class HotelEditComponent implements OnInit {
formData = new FormData();
ngOnInit() {
this.getOneHotel(this.route.snapshot.params['id']);
}
getOneHotel(id) {
this.http.get( this.apiUrl + '/api/hotel/' + id).subscribe(data => {
this.hotel = data;
this.appendImages(data['hotelimages']); //Here I am getting the data as mentioned here
});
}
public appendImages(imagedata) {
for (var i = 0; i < imagedata.length; i++) {
console.log(imagedata[i]);
this.formData.append('hotelgallery', imagedata[i], imagedata[i]['originalname']);
}
console.log(this.formData);
}
}
那么有人可以告诉我如何将现有的图像数据附加到 FormData 中吗?任何帮助和建议都会非常重要。
用例: 实际上我曾使用 formData 以角度上传图像。现在在编辑页面中,图像显示正常。但是假设用户编辑了一些数据并上传了一些图像或删除了一些图像。在这种情况下,我从数据库中获取图像并再次尝试使用 formdata 上传它们。
我已经使用this 模块和 multer 为 nodejs 上传带有 formData 的图像。
【问题讨论】:
-
data['hotelimages']应该做什么?您从服务获得的数据中没有hotelimages属性。imagedata[i]包含什么? -
显示图片应该是data['path']
-
实际上数据是一个对象,我从 data['hotelimages'] 获取所有图像的数据。
-
乍一看,我认为您使用了错误的
FormData.append()重载。具有 3 个参数的那个是用于第二个参数是Blob/File的情况,而你的参数似乎不是。参考:developer.mozilla.org/en-US/docs/Web/API/FormData/append -
我不明白你实际上想做什么(用例)。也许你可以再描述一下。
标签: javascript angular form-data