如何使用CURL将SQL或任何文本文件从Localhost发送到网站


How To send SQL or any text file from Localhost to a Website using CURL

我在本地机器上有一个SQL文件,我想把这个文件发送到我的另一台本地主机上,它就像我的网站一样。之后,我想执行这个文件,并更新我的网站数据库。我用CURL试过了,但没有达到预期效果。下面给出了我的发送方和接收方文件,我还有两个文件Sql_generator.php和Sql_execute.php(它正在执行在服务器端接收的Sql文件)。请告诉我哪里做错了,因为我在一台本地主机上运行这个演示,代码运行良好,但当我从一台机器到另一台机器使用它时,服务器端会生成空的sql文件。请帮忙!!

Sender.php

<?php
     include('sqlGenerator.php');
     include('connect.php');
     if(isset($_POST['sendfile'])){
       // Creating a Back Up from Client-Side-Database
       $return = backup_tables($name);
      if($return){
      echo "</br> <b>Back Up!! </b>is created successfully.  </br></br>";
    //clean your post here  
    $path = $_POST['db_file'];      
    $post = "file_address=".$path;
    //Where are you sending it to?
    $url = "http://192.168.1.21/final2/filereceiver.php";
    //echo $post;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);     
    curl_close($ch);    
    if($response){
        echo "</br> <b>Congratulation!! </b> Your File has been Send Successfully </br></br>";
        echo $response;     
    }
     else{ echo "File not sent"; }
   }
} ?>
<form action="sendfile.php" method="post"/>
    <input type="file" name="db_file" value="http://192.168.1.20/xampp/htdocs/final/db.sql" readOnly="true"/>
    <input type="submit" name="sendfile" value="Send File To Server"/>
</form>

Receiver.php

<?php 
      include("execute_sql.php");
      class Download extends Executer{
         const URL_MAX_LENGTH = 2050;
         //clean url
         protected function cleanUrl($url){
         if(isset($url)){
         if(!empty($url)){
            if(strlen($url) < self::URL_MAX_LENGTH){
                return strip_tags($url);
            }
        }
    }
}
//is url
protected function isUrl($url){
    $url = $this->cleanUrl($url);
    if(isset($url)){
        if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_PATH_REQUIRED)){
            return $url;
        }
    }
}
// return extension 
protected function returnExtension ($url){
    if($this->isUrl($url)){
        $end = end(preg_split("/[.]/", $url));
        if(isset($end)){
            return $end;
        }
    }
}
//Download file
public function downloadFile($url){
    if($this->isUrl($url)){
        $extension = $this->returnExtension($url);
        if($extension){
            // curl Session
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $return = curl_exec($ch);
            curl_close($ch);
            $serverside_filename = "server_database_file";
            $destination = "C:/xampp/htdocs/final/downloads/$serverside_filename.$extension";

            $file = fopen($destination, "w+");
            fputs($file, $return);
            if(fclose($file)){                  
                if(file_exists($destination)){
                    echo "<b>Server Says :- </b>Localhost send me a file successfully.. </br>
                    File is available at :-  {$destination}</br></br>";
                }
                $path = "C:/xampp/htdocs/final/downloads/server_database_file.sql";
                $obj1 = new Executer();
                $res = $obj1->execute($path);
                if($res){
                    echo "Your Data is inserted in Server's Database Successfully</br></br>";                       
                }
                else{
                    echo "Your Data Insertion is still Pending........</br> ";
                }
            }
        }
    }
} } ?>
<?php $obj = new Download();
  if(isset($_POST['url'])){
    $url = $_POST['url'];
  } 
// Receiving the file address from sender
if(isset($_POST['file_address'])){  
    $url = $_POST['file_address'];
    if(isset($url)){
        $obj->downloadFile($url);
    }
}
else{ 
    echo "</br>Sorry your file is not received";
}
?>

要"发送"到服务器的文件不是作为普通php文件发送的。它实际上是由你机器上的网络服务器根据服务器的请求进行处理的

您需要修改curl请求以实际发送php文件,而不是指向它的链接

快速的谷歌搜索给了我这篇可能有用的文章:

http://code.stephenmorley.org/php/sending-files-using-curl/