无法将POST请求中收到的文件上传到PHP中的另一个API

时间:2017-06-22 19:25:55

标签: javascript php curl

我正在使用AngularJS将PDF文件上传到我服务器上的upload.php。 upload.php进一步通过使用curl给出的API将POST请求中的$_FILES接收上传到另一台服务器。

$_FILES对象包含PDF文件。

这是upload.php的一部分,它完成了工作:

$filename = $_FILES['file']['name'];
$filedata = $_FILES['file']['tmp_name'];
    $curl = curl_init();
    $payload = json_encode(array(
                'file' => "@$filedata", "filename" => $filename));
    curl_setopt_array(
        $curl,
        array(
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_URL => 'https://api.mydmian.in/fileupload',
            CURLOPT_POST => 1,
            CURLOPT_POSTFIELDS => $payload
        )
    );
    $resp = curl_exec($curl);

如何将$ _FILES转换为文件对象,以便我可以将其附加到curl有效负载中?

1 个答案:

答案 0 :(得分:1)

您可以使用file_get_contents()检索上传文件的内容并将其存储在$filedata中,然后将其附加到$payload

$filename = $_FILES['file']['name'];
$filedata = file_get_contents($_FILES['file']['tmp_name']);
$curl = curl_init();
$payload = json_encode(array(
            'file' => $filedata, "filename" => $filename));
curl_setopt_array(
    $curl,
    array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => 'https://api.mydmian.in/fileupload',
        CURLOPT_POST => 1,
        CURLOPT_POSTFIELDS => $payload
    )
);
$resp = curl_exec($curl);