1

我希望你们都很好,

我在将 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 模块,说它会引发一些错误,我不知道。

感谢您的关注。

4

1 回答 1

0

我回到你身边,所以我做了很多事情,所以我不知道是什么解决了这个问题,同时我知道我改变的最后一件事是,删除set('Content-Type', 'multipart/form-data')并且我还将 symfony 放在 https 服务器上。除了 php 和 symfony 的所有版本变化。如果有人知道什么解决了这个问题,我很乐意听。

于 2022-01-20T08:39:32.613 回答