如何通过PHP CURL POST上传文件

时间:2019-01-02 21:54:46

标签: php file curl post upload

所以我一直在尝试通过Curl上传文件。我的本地服务器上的根目录中有一个txt文件。尝试时,它表示文件已成功上传,但是txt中的文本与我拥有的txt文件不同。

    $postData = array(
        'folderId' => '3276800',
        'filename' => 'TxT_12323.txt',
        'filedata' => '@847327489732984.txt',
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://192.168.1.103/services/rest/document/upload");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    curl_setopt($ch, CURLOPT_USERPWD, "admin" . ":" . "admin");

    $result = curl_exec($ch);

    if (curl_errno($ch))
    {
        echo 'Error:' . curl_error($ch);
        exit();
    }

    echo "Upload Successful!<br><br>Return: " . $result;

    curl_close($ch);

假设上载的文件与847327489732984.txt具有相同的内部文本,但是,当打开.txt时,其中仅包含“ @ 847327489732984.txt”。

因此,它没有正确上传文件。

我通过而不是

来解决此问题
'filedata' => '@847327489732984.txt'

我做到了

'filedata' => file_get_contents('123.pdf')

1 个答案:

答案 0 :(得分:1)

您应该执行类似的操作

$postData = array(
    'folderId' => '3276800',
    'filename' => 'TxT_12323.txt',
    'filedata' => file_get_contents('847327489732984.txt'),
);

在大多数情况下,您可以将任何文件视为PHP中的字符串数据。这并不意味着您可以阅读并理解它们,但是可以在变量或输出中以这种方式表示它们,并且应该可以正常工作。