[英]send data with json format in angular 8 with formData
我需要通过这种格式从服务器发送数据:
{
"name":"kianoush",
"userName":"kia9372",
"email":"kiadr9372@gmail.com"
}
我尝试做这项工作:
update(item:UserEditModel): Observable<any>{
const formData: FormData = new FormData();
for (const key in item) {
if (item.hasOwnProperty(key)) {
if (item[key] instanceof File) {
formData.append(key, item[key], item[key].name);
} else {
formData.append(key, item[key]);
}
}
}
return this.httpClient.post(this.appConfig.apiEndpoint+'User/UpdateUser',
formData, {
headers:this.headers,
reportProgress: true,
observe: 'events'
})
.pipe(map(response => response || {} as HttpEvent<any>));
}
但它以这种格式发送到服务器:
------WebKitFormBoundaryhWmbFWpD25WdeB9n
Content-Disposition: form-data; name="firstName"
vbnvbnvb
------WebKitFormBoundaryhWmbFWpD25WdeB9n
Content-Disposition: form-data; name="lastName"
vbnvbnvn
------WebKitFormBoundaryhWmbFWpD25WdeB9n
Content-Disposition: form-data; name="userName"
vbnvbnvb
------WebKitFormBoundaryhWmbFWpD25WdeB9n
Content-Disposition: form-data; name="roleId"
但我想通过这种格式从服务器发送数据:
{
"name":"kianoush",
"userName":"kia9372",
"email":"kiadr9372@gmail.com"
}
现在我该如何解决这个问题???
因为你有表单数据,它的格式与 JSON 不同 如果请求中没有文件,只需将表单数据转换为 JSON
或者在后端使用 [FromForm] 之前的 dto
通常,当我有一些文件应该发送到服务器时,我正在使用这种解决方案,您可以这样做
第一的:
slectedFile: File;
//imgUrl for showing it in the html tag
imgUrl = '../assets/img/profilepic.png';
第二:
form: FormGroup = this.fb.group({
//........
file: [null]
});
第三:
onFileSelect(file) {
if (file.target.files[0]) {
this.slectedFile = file.target.files[0] as File;
const reader = new FileReader();
reader.readAsDataURL(this.slectedFile);
reader.onload = (event: any) => {
this.imgUrl = event.target.result;
};
}
}
最后:
我认为你的主要问题在这里
const data= new FormData();
if (this.slectedFile) {
data.append('file', this.slectedFile, this.slectedFile.name);
}
我应该提到个人使用这个包作为输入
https://www.npmjs.com/package/ngx-material-file-input
在 html 方面,您只需说:
<mat-form-field class="col-md-12 ml-10 ngxmatfileinput">
<ngx-mat-file-input
(change)="onFileSelect($event)"
formControlName="file"
accept="image/*">
</ngx-mat-file-input>
<img [src]="imgUrl" class="float-left icon-fileupload" />
</mat-form-field>
如果您不发送文件,请使用以下代码
update(item:UserEditModel): Observable<any>{
const _data ={
"name":"item.name",
"userName":"item.userName",
"email":"item.email"
}
return this.httpClient.post(this.appConfig.apiEndpoint+'User/UpdateUser',
_data)
.pipe(map(response => response || {} as HttpEvent<any>));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.