我目前正在构建一个用AngularJS编写的应用程序,后端使用基于Laravel的API,数据通过一个简单的PHP代理传递,以保证我的API密钥安全(ish)。
对于POST请求代理只需json_decode
PHP输入流(php://输入)作为Angular将POST数据序列化为JSON,将其传递给http_build_query
然后通过cURL将其转发到API - 所以它一直在完美地运作。
我已设法将文件转到代理 - 但是,由于它是使用multipart/form-data
标头发送的,因此它仅在$_FILES
中可用,而不是输入流。
以下代理的相关摘要:
function curlRequest($url, $post = false, $data = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if($post == true) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
}
$data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
}
$data = json_decode(file_get_contents('php://input'), true);
$data['api_key'] = API_KEY;
// File data available here!
var_dump($_FILES);
$result = curlRequest(URL, true, $data);
我遇到的问题,我不确定如何在$_FILES
中获取文件后将文件正确地发布到API端点。
非常感谢任何帮助!
答案 0 :(得分:1)
这也可以发送文件:
$data = json_decode(array_merge($_REQUEST, $_FILES));
$data['api_key'] = API_KEY;
// File data available here!
var_dump($_FILES);
$result = curlRequest(URL, true, $data);