PHP cURL 上传文件到 Node JS 服务器

标签 php curl

我有一个 PHP 前端项目和 Node JS API。

我需要将文件发送到 API,但我必须使用 cURL,因为表单发送到 PHP,而 PHP 通过 cURL 发送到 Node JS。

我尝试了很多不同的方法,但我无法让它发挥作用。

在我的 API 上,我使用 multer 来处理上传,一切正常。如果我将操作直接设置为 API,我可以从 Postman 发送文件或直接从表单发送文件。

这是我尝试过的最后一个代码:

$url = $this->url;
$filename = $_FILES['logo']['name'];
$filedata = $_FILES['logo']['tmp_name'];
$filesize = $_FILES['logo']['size'];

if ($filedata != '') {
    echo $filename;
    $headers = array("Content-Type:multipart/form-data"); // cURL headers for file uploading
    $postfields = array("filedata" => "@$filedata", "filename" => $filename);
    $ch = curl_init();
    $options = array(
        CURLOPT_URL => $url,
        CURLOPT_HEADER => true,
        CURLOPT_POST => 1,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_POSTFIELDS => $postfields,
        CURLOPT_INFILESIZE => $filesize,
        CURLOPT_RETURNTRANSFER => true
    ); // cURL options
    curl_setopt_array($ch, $options);
    curl_exec($ch);
    if(!curl_errno($ch)) {
        $info = curl_getinfo($ch);
        if ($info['http_code'] == 200)
            $errmsg = "File uploaded successfully";
    }
    else {
        $errmsg = curl_error($ch);
    }
    curl_close($ch);
}

什么都没发生...

最佳答案

经过多次尝试,我终于成功了!

这是我的代码:

$file = $_FILES[$inputName]['tmp_name'];

$mimetype = mime_content_type($file);

$cFile = new CURLFile($file, $mimetype);

// add file with $_POST data
$this->data[$inputName] = $cFile;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$this->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $this->data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this->header);

$result = curl_exec($ch);
curl_close($ch);

关于PHP cURL 上传文件到 Node JS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62354473/

相关文章:

php - mysql 参数的问题

php - 使用 AJAX 接收选项时自动从 select 中选择一个选项

cookies - 如何从命令行使用 Curl 来使用 cookie 发布 GET 方法

php - Guzzle ~6.0 多部分和 form_params

php - 从 twilio 收到的电话号码格式

javascript - Cropit 将 Canvas 图像上传到 NodeJS

powershell - 如何在 Powershell 中使用 Invoke-WebRequest 重新创建工作的 CURL 命令

rest - postman 工作,但 "Code snippet"没有生成。 curl

php - 从 PHP 连接到 postgresql 数据库的首选方法是什么?

linux - 无法在 OracleLinuxServer 6.7 上的 docker 上安装 weblogic