phpリモートサーバへのファイルのアップロード

3520 ワード

FTP方式でファイルをリモートサーバにアップロードする
if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {     $ftp_server = "192.168.1.105";
    $ftp_user_name = "lesley";
    $ftp_user_pass = "123456";
    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
    $file = $_FILES['uploadfile']['tmp_name'];
    $remote_file = '/test/'.$_FILES['uploadfile']['name'];
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo"ファイル:".$_FILES['uploadfile'][name']."アップロード成功";
    } else {
echo「アップロード失敗」;
    }      ftp_close($conn_id);

CURLリモートアップロードファイル(アナログPOST提出フォーム処理リモート画像アップロード)
/**  * Class CurlForm  *  * submit form data to a remote server use CURL  * file upload support  *  * @link         * @author      Gavin yang  * @msn:        athotmail88 @ hotmail.com  */class CurlForm {  /**      * url where you want to submit the form      * @var String      */  private $remoteUrl;    /**      * form vars      * @var Array      */  private $postvars = array();    /*  * Constructor for CurlForm  * @param String $remoteUrl url where you want to submit the form  */ public function __construct($remoteUrl)  {   $this->remoteUrl = $remoteUrl;
/*コミットされたフォーム変数を処理し、post変数とfiles変数を同時に$this->postvarsに入れます.ここでは配列を返します.もちろんpost変数だけでも文字列「a=b&c=d」の形式でも構いません.files変数が含まれている場合は、数組にしか入れられません*/if(isset($_POST)){foreach($_POSTas$var=>$val){     $this->postvars[$var] = $val;    }   }
/*ファイルをアップロードするプロセスは、実際には2つのステップに分かれています.最初のステップは、ファイルをローカルサーバにアップロードし、ローカルサーバのキャッシュアドレス、すなわちtmp_nameを取得します.2番目のステップは、このキャッシュファイルのデータをリモートサーバに送信することです.もちろん、ファイルデータを読み取るプロセスはcurl関数の内部で実現されています.ファイルアドレスの前に「@」を付ける限り、curlは転送する添付ファイルだと思っていますが、このファイルが実際に存在することを保証します.これにより、リモートサーバ側はローカルサーバに提出された過去のフォームを受信します.リモートサーバにアップロードされたファイルはローカルサーバ上のキャッシュファイルなので、元のファイルのファイル名を取得するには、post変数に「filename」という変を追加しましたこれはfiles変数に対応する*/if(isset($_FILES){foreach($_FILESas$var=>$val){if(is_array($val[' tmp_name']){foreach($val[' tmp_name']as$k=>$fname){$this->postvars[$var.[$k]]="@".$fname;$ ththis->postvars[$var][$k]]]]][$fname;$ththis->>postvars['filename'.[$ var][$var][$k]]]]]]][$var[$k]]]]]]]]]=$val['name'][$k];      }     }     else     {      $this->postvars[$var] = "@".$val['tmp_name'];      $this->postvars['filename'."[$var]"] = $val['name'];     }    }   }  }
/**post form to remote server*/public function post(){set_time_limit(0);$ch=curl_init();//リモートアドレス設定
curl_setopt($ch,CURLOPT_URL,$this->remoteUrl);//postメソッドcurl_setopt($ch,CURLOPT_POST,1);//フォーム変数curl_setopt($ch,CURLOPT_POSTFILDS,$this->postvars);//戻りデータを直接表示するかどうか//curl_setopt($ch,CURLOPT_RETURNTRASFER,false);//ヘッダ情報を表示するかどうか//curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);//設定($ch,CURLOPT_HEADER,false);//ページ内容を直接出力するかどうかを設定するfalseを出力//curl_setopt($ch,CURLOPT_NOBODY,false);curl_exec($ch);//エラーが発生するとcurl_errno($ch)&&die(curl_error($ch);//リソースcurl_close($ch);exit(); } } ?>
 
 
 
server.php
echo "
";
print_r($_POST);
print_r($_FILES);
echo "
";
if(move_uploaded_file($_FILES['file1']['tmp_name'][1],'./test.txt')){  echo 'ok'; } ?>