如何使用angular上传图片 8
How to upload image using angular 8
app.module.ts
ngOnInit() {
this.userForm = this.fb.group({
firstName : ['', Validators.required],
gender : ['', Validators.required],
maritalStatus : ['', Validators.required],
lastName : ['', Validators.required],
dob : ['', Validators.required],
nationality : ['', Validators.required],
pic : [''],
streetAddress : ['', Validators.required],
city : ['', Validators.required],
postalCode : ['', Validators.required],
phone : ['', Validators.required],
state : ['', Validators.required],
country : ['', Validators.required],
email : ['', Validators.required],
jobTitle : ['', Validators.required],
dateOfJoining : ['', Validators.required],
department : ['', Validators.required],
employeeStatus : ['', Validators.required],
kra : ['', Validators.required],
assignedSupervisor : ['', Validators.required],
assignedSubordinate : ['', Validators.required],
workExperience : ['', Validators.required],
skills : ['', Validators.required],
education : ['', Validators.required],
password : ['', Validators.required]
})
}
onSubmit() {
this.submitted = true;
this.userService.addUser(this.userForm.value).subscribe(
res => {
this.model = res
console.log(res)
},
error => {
this.error = error,
console.log(error)
}
)
app.component.html
<div class="col-lg-12 col-12 mt-2">
<label for="pic">Profile Picture</label><br/>
<input type="file" formControlname='pic' name='pic'/>
</div>
app.service.ts
addUser(formData: User) {
return this.http.post<User>(`${this.serverUrl}`, formData).pipe(
catchError(this.handleError)
);
}
一切正常。我只想知道如何在 angular 中上传图片 8. Pic 正在使用在邮递员上测试的节点在后端上传。任何人都可以帮助我如何使用 angular 上传图片,请帮帮我
在发出 post 请求之前,将您的 formData
转换为实际的 FormData
,如下所述:https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData.
使用
addUser(formData: User) {
const body = new FormData();
for(const [key, value] of Object.entries(formData)){
if(key === 'pic'){
body.append(key, value)
}
body.append(key, `${value}`)
}
return this.http.post<User>(`${this.serverUrl}`, body).pipe(catchError(this.handleError);
);
那么您的后端应该可以识别该文件。
不幸的是,FormData
期望 string
或 blob
作为值的数据类型。
虽说:
If the sent value is different than String or Blob it will be automatically converted to String: (...)
我的编辑器(vs code)告诉我不要使用数字,而是先转换它。
解决方案假设 User
中其他属性的数据类型是原语。
app.module.ts
ngOnInit() {
this.userForm = this.fb.group({
firstName : ['', Validators.required],
gender : ['', Validators.required],
maritalStatus : ['', Validators.required],
lastName : ['', Validators.required],
dob : ['', Validators.required],
nationality : ['', Validators.required],
pic : [''],
streetAddress : ['', Validators.required],
city : ['', Validators.required],
postalCode : ['', Validators.required],
phone : ['', Validators.required],
state : ['', Validators.required],
country : ['', Validators.required],
email : ['', Validators.required],
jobTitle : ['', Validators.required],
dateOfJoining : ['', Validators.required],
department : ['', Validators.required],
employeeStatus : ['', Validators.required],
kra : ['', Validators.required],
assignedSupervisor : ['', Validators.required],
assignedSubordinate : ['', Validators.required],
workExperience : ['', Validators.required],
skills : ['', Validators.required],
education : ['', Validators.required],
password : ['', Validators.required]
})
}
onSubmit() {
this.submitted = true;
this.userService.addUser(this.userForm.value).subscribe(
res => {
this.model = res
console.log(res)
},
error => {
this.error = error,
console.log(error)
}
)
app.component.html
<div class="col-lg-12 col-12 mt-2">
<label for="pic">Profile Picture</label><br/>
<input type="file" formControlname='pic' name='pic'/>
</div>
app.service.ts
addUser(formData: User) {
return this.http.post<User>(`${this.serverUrl}`, formData).pipe(
catchError(this.handleError)
);
}
一切正常。我只想知道如何在 angular 中上传图片 8. Pic 正在使用在邮递员上测试的节点在后端上传。任何人都可以帮助我如何使用 angular 上传图片,请帮帮我
在发出 post 请求之前,将您的 formData
转换为实际的 FormData
,如下所述:https://developer.mozilla.org/en-US/docs/Web/API/FormData/FormData.
使用
addUser(formData: User) {
const body = new FormData();
for(const [key, value] of Object.entries(formData)){
if(key === 'pic'){
body.append(key, value)
}
body.append(key, `${value}`)
}
return this.http.post<User>(`${this.serverUrl}`, body).pipe(catchError(this.handleError);
);
那么您的后端应该可以识别该文件。
不幸的是,FormData
期望 string
或 blob
作为值的数据类型。
虽说:
If the sent value is different than String or Blob it will be automatically converted to String: (...)
我的编辑器(vs code)告诉我不要使用数字,而是先转换它。
解决方案假设 User
中其他属性的数据类型是原语。