php - 无法从 Angular 到 Symfony 检索已发布的表单和文件数据
问题描述
我正在尝试使用 angular 和 symfony 进行基本的图像上传。
我们有我们的基本形式
<div class="form-group">
<input type="file" #fileUpload (change)="selectFile()"/>
</div>
它的打字稿对应......
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {ApiService} from "../../services/api.service";
import {ApiResponseInterface} from "../../interfaces/apiResponse.interface";
import {HttpClient, HttpHeaders} from "@angular/common/http";
@Component({
selector: 'app-tester',
templateUrl: './tester.component.html',
styleUrls: ['./tester.component.scss']
})
export class TesterComponent implements OnInit {
@ViewChild("fileUpload",{static: false}) fileUpload: ElementRef;
constructor(private api: ApiService, private http: HttpClient) { }
ngOnInit() {
}
selectFile(){
console.log(this.fileUpload.nativeElement.files)
const fileList: FileList = this.fileUpload.nativeElement.files;
const theFile: File = fileList[0];
let formData = new FormData();
formData.append('file',theFile,theFile.name);
formData.append('something','test');
this.http.post('http://api.admireme.vip.local:8080/tester',formData).subscribe((resp:any)=>{
});
}
}
它将表单数据发送到我们的 TestController
<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* Class TestController
* @package App\Controller
*/
class TestController extends BaseController{
/**
* @Route("/tester", name="testerRoute")
* @param Request $request
* @return JsonResponse
*/
public function tester(Request $request) : JsonResponse{
return $this->json([
'other'=>$request->get('something'),
'files'=>$request->files->get('file')
]);
}
}
所以我们可以很好地选择一个文件。但是当我试图抓取数据时,就像我在无法抓取数据之前做了一百次一样。
但是它以我不熟悉的方式发送它。
REQUEST PAYLOAD--->
------WebKitFormBoundary3i9AnjOpWTHJspwt
Content-Disposition: form-data; name="file"; filename="DSC_0359.jpg"
Content-Type: image/jpeg
------WebKitFormBoundary3i9AnjOpWTHJspwt
Content-Disposition: form-data; name="something"
test
------WebKitFormBoundary3i9AnjOpWTHJspwt--
回应是....
{"other":null,"files":null}
我该怎么做才能使这些数据可用?我以前没见过这个
解决方案
推荐阅读
- openshift - 在 OpenShift 上跟踪 Che
- jquery - 如何重新加载带有参数的页面?
- php - 在多个表单使用的同一个感谢页面上显示不同内容的最佳方式是什么?
- python - Python 正则表达式不提取值 - Python 3.x
- python - 访问 groupby 的列
- python - 如何在 Python 解释器中更新导入的脚本?
- svelte - 从组件和插槽中的组件传递道具
- c# - 在 C# 中使用 BinaryFormatter 转换从 C 服务器发送的数据
- computer-vision - 我在自定义视觉中创建了一个新模型。我如何在计算机视觉中使用这个模型?
- javascript - 如何避免由于 NaN 或具有 rowcallback toExponential(2) 的列中的其他非数值导致的错误