我希望你们都很好,
我在将 Angular 13 中的 FormData 文件发送到 Symfony 5.4 时遇到问题。
onFileSelected1(event:any){
const file:File = event.target.files[0];
let formData = new FormData();
formData.append("filephotoverif",file);
for (var [key, value] of formData.entries()) {
console.log(key, value);
}
this.userService.validateUser(formData,this.UserId).subscribe(m => {this.onUploadRefresh();});
}
public validateUser(data: any, id:number): Observable<User[]>
{
return this.server.postbis<any>('personne/imageverif/'+id, data).pipe(
map(res => res),
catchError(err =>
{
return [];
})
);
}
public postbis<T>(url: string, body: T, secure:boolean=true): Observable<any>
{
if(secure){
let token=sessionStorage.getItem('id_token');
let headers = new HttpHeaders();
if (typeof token === 'string'){
headers = new HttpHeaders()
.set('Content-Type', 'multipart/form-data').set('Authorization', 'Bearer ' + token ).set( 'method' , 'POST');
}
return this.call(() =>this.http.post(this.BASE_URL + url, body, {'headers':headers}));
}
else{
return this.http.post(this.BASE_URL + url, body);
}
}
我有$request->getContent()
一个带有. 我的请求的转储不会显示任何文件、查询或请求。$fileversocarteid=$req->files->get('fileversocarteid');
null
Symfony\Component\HttpFoundation\Request {#51 ▼
+attributes: Symfony\Component\HttpFoundation\ParameterBag {#93 ▶}
+request: Symfony\Component\HttpFoundation\InputBag {#99 ▼
#parameters: []
}
+query: Symfony\Component\HttpFoundation\InputBag {#94 ▼
#parameters: []
}
+server: Symfony\Component\HttpFoundation\ServerBag {#90 ▼
#parameters: array:113 [▶]
}
+files: Symfony\Component\HttpFoundation\FileBag {#91 ▼
#parameters: []
}
+cookies: Symfony\Component\HttpFoundation\InputBag {#92 ▼
#parameters: []
}
+headers: Symfony\Component\HttpFoundation\HeaderBag {#89 ▼
#headers: array:20 [▶]
#cacheControl: []
}
#content: null
#languages: null
#charsets: null
#encodings: null
#acceptableContentTypes: null
#pathInfo: "/api/personne/imageverif/5"
#requestUri: "/api/personne/imageverif/5"
#baseUrl: ""
#basePath: null
#method: "POST"
#format: "json"
#session: Closure() {#202 ▶}
#locale: null
#defaultLocale: "en"
-preferredFormat: null
-isHostValid: true
-isForwardedValid: true
-isSafeContentPreferred: null
basePath: ""
}
那是我的 FormData (Angular 13) 的 console.log
filephotoverif
File {name: 'IMG-20211220-WA0001.jpg', lastModified: 1640009345334, lastModifiedDate: Mon Dec 20 2021 15:09:05 GMT+0100 (heure normale d’Europe centrale), webkitRelativePath: '', size: 177618, …}
lastModified: 1640009345334
lastModifiedDate: Mon Dec 20 2021 15:09:05 GMT+0100 (heure normale d’Europe centrale) {}
name: "IMG-20211220-WA0001.jpg"
size: 177618
type: "image/jpeg"
webkitRelativePath: ""
[[Prototype]]: File
这就是我的资源|字符串dump($req->getContent())
b"------WebKitFormBoundaryEXJJL0VPLSS5ODRtContent-Disposition: form-data; name="filephotoverif"; filename="IMG-20211220-WA0001.jpg"Content-Type: image/jpeg Ï Ó\x00\x10JFIF\x00\x01\x01\x01\x00`\x00`\x00\x00 ß\x00"Exif\x00\x00MM\x00*\x00\x00\x00\x08\x00\x01\x01\x12\x00\x03\x00\x00\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00 █\x00C\x00\x02\x01\x01\x02\x01\x01\x02\x02\x02\x02\x02\x02\x02\x02\x03\x05\x03\x03\x03\x03\x03\x0...etc
我使用 php 8.1.1、8.0.14 和现在的 7.4.27 相同的错误。
也许是我添加到 angular 的 bcrypt 模块,说它会引发一些错误,我不知道。
感谢您的关注。