将文件从一台服务器传输到另一台服务器时出现问题


Trouble transfering file from a server to another server

大家好,我在使用 php 将文件从服务器上传到我的朋友服务器时遇到问题。起初我收到一个 26 错误,现在我收到此错误:

Error: Possible file upload attack: filename ''.Array ( ) 1

下面是我的代码

<?php
 $ch = curl_init();
chmod("grademegood.us/uploadedfiles/hello.txt", 0755);
  $post =array(
  'file' => '@' . realpath('./uploadedfiles/hello.txt')
 );
 curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
 curl_setopt($ch, CURLOPT_URL, "http://friendsdomain.com/upload.php");
 curl_setopt($ch, CURLOPT_POST,true);
 $data = curl_exec($ch);
 if (curl_errno($ch))
{
 print curl_errno($ch);
}
else
{
  curl_close($ch);
 }
 echo $data;
 ?>

这是接收方代码:

<?php
$uploads_dir = './phpbackend/';
if(is_uploaded_file($_FILES['userfile']['tmp_name'])) 
{
  echo  "File ".  $_FILES['userfile']['name']  ." uploaded successfully to
 $uploads_dir/$dest.'n";
 $dest=  $_FILES['userfile'] ['name'];
 move_uploaded_file ($_FILES['userfile'] ['tmp_name'], "$uploads_dir/$dest");
} 
 else 
  {
    echo "Possible file upload attack: ";
    echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
    print_r($_FILES);
  }
?>

请我需要一些帮助。

当您设置cURL请求时,您将使用以下方式设置POST变量:

  $post =array(
    'file' => '@' . realpath('./uploadedfiles/hello.txt')
    );

数组键是在$_POST数据中发送的变量名称。

当您在要查找的接收服务器上解压缩文件时

is_uploaded_file($_FILES['userfile']['tmp_name']

其中'userfile'应该是发送机发送的 POST 请求中使用的变量名称。

在 POST 数据中创建的变量必须与接收计算机使用的变量名称匹配,否则两台计算机将无法正确识别不同的字段。

目前,您正在使用 file 中的文件创建 POST 数据,但您的接收机器正在 userfile 变量中查找该文件。测试失败,因为变量名称不匹配,因此出现消息。