如何用PHP中的cURL传输文本文件?

时间:2017-09-20 13:57:29

标签: php curl

我想将一个基本的.txt文件从一台服务器传输到另一台服务器。

我陷入了如何处理目标服务器上的文件的问题。

这是我将文本文件发送到远程服务器的代码:

// Create a cURL handle
$ch = curl_init();

// Create a CURLFile object
$cfile = new CURLFile('testfile.txt','text/plain');

// Assign POST data
$data = array("test_file" =>$cfile);
curl_setopt($ch, CURLOPT_URL,'https://example.com/upload.php');
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

// Execute the handle
curl_exec($ch);
//close curl
curl_close ($ch);

这似乎有效,我的upload.php文件(带print_r)的输出如下:

 [0] => Array
    (
        [name] => testfile.txt
        [type] => text/plain
        [tmp_name] => /tmp/phpGO8IhB
        [error] => 0
        [size] => 136
    )

不幸的是,我无法让它工作,testfile.txt落在远程服务器上。

这是我的最后一次尝试,也没有成功:

if(isset($_FILES['test_file'])){
    move_uploaded_file($_FILES['testfile.txt']['test_file'], "uploads/");
}else{
    echo "error";
}

我唯一知道的是,该文件似乎已到达服务器,但我做错了。我需要做什么?

1 个答案:

答案 0 :(得分:2)

您的move_uploaded_file()电话应该是:

move_uploaded_file($_FILES['test_file']['tmp_name'], "uploads/yourfile.txt");
  • 您的文件密钥为test_file,并且您尝试访问test_file.txt作为密钥。

  • 您需要tmp_name元素而不是test_file

  • 您需要提供目标文件的文件名,而不是uploads/这是一个目录。您可以使用动态$_FILES['test_file']['name'],但必须对其进行验证。