在我的应用程序中,用户可以在特定页面上传图像并填写多个字段。我使用AJAX POST将该数据发送到Web服务器(php)。使用FormData设置数据,如下所示:
var formData = new FormData();
formData.append('image', this.imageUploadField.files[0]);
formData.append('levelName', this.nameField.value);
formData.append('cost', this.monthlyCostField.value);
xhttp.open("POST", "http://example.com");
xhttp.setRequestHeader("Content-Type", "multipart/form-data");
xhttp.send(formData);
我使用$ _FILES检索临时图像服务器端。然后我需要将该图像和数据推送到REST API进行处理,但是我无法这样做。这是我通过Web服务器发送图像的方式。第一个问题是它到达API并且只能通过$ _POST全局检索,没有文件名,路径等......我不明白。
$data = file_get_contents('php://input');
// Setup http request
$options = ["http" =>
["method" => "POST",
"header" => "Content-Type: multipart/form-data",
"content" => $data,
"header" => "Authorization: " . $_SESSION['token'] ] ];
// Call API
$apiResponse = file_get_contents($apiUrl, NULL, stream_context_create($options));
如何将图像和数据发送到API服务器。请注意我没有使用卷曲。还应注意,webserver和api目前都在我的localhost上运行。
更新:添加更多细节。在实现multipart / form-data之后,这就是我print_r($_POST);
:
------ WebKitFormBoundaryI96wB7anw56O2g4M Content-Disposition:form-data; NAME = “图像”; filename =“blue_tier.png”内容类型: 图像/ PNG
二进制数据
------ WebKitFormBoundaryI96wB7anw56O2g4M Content-Disposition:form-data; NAME = “levelName”
测试名称 ------ WebKitFormBoundaryI96wB7anw56O2g4M Content-Disposition:form-data;名称= “成本”
4.99
我似乎无法获取数据。 $ _POST ['levelName']例如为null。