【问题标题】:Upload file with php to another php server使用 php 将文件上传到另一个 php 服务器
【发布时间】:2010-06-28 20:11:51
【问题描述】:

我不是在询问如何将文件从浏览器上传到 php 脚本,关于这方面的教程已经很多了。我在问这个:

我有一个接受用户文件的 php 脚本,该文件当前位于服务器 1 的硬盘上。我想将文件从服务器 1 上传到服务器 2 上的 php 脚本,使用常规Http post 协议,因此服务器 2 上的 php 脚本可以编写为标准的文件上传处理程序。

我在互联网上找不到任何教程,因为他们都在谈论 browser->server1。 php上传的教程都讲ftp,我不想用那个协议。

请帮忙?

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以为此使用 CURL。应该这样做。

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/path/to/file.txt'));
    curl_setopt($ch, CURLOPT_URL, 'http://server2/upload.php');
    curl_exec($ch);
    curl_close($ch);
    

    然后您可以将 server2 部分作为常规文件上传处理。有关这些选项的更多信息,请参阅 curl_setopt()

    【讨论】:

    • 我只是在另一个项目中再次需要这个,我在我的新代码中犯了一个非常微妙的错误,我不得不在这里发布它:非常重要的是CURLOPT_POST,true 在设置为数组时位于 POSTFIELDS 之前!
    【解决方案2】:

    您可以使用 SOAP 将文件从一台服务器发送到另一台服务器。

    接收服务器:

    <?php
    $server = new Soap_Server( null, array('uri'=>'somerui') );
    $server->addFunction( 'receiveFile' );
    function receiveFile( $file ) {
       file_put_contents( 'somepath', base64_decode( $file ) );
    }
    ?>
    

    发送服务器:

    <?php
    $client = new Soap_Client( null, array('uri'=>'somerui') );
    $client->receiveFile( base64_encode( file_get_contents( 'somepath' ) );
    ?>
    

    【讨论】:

    • 呵呵,创意加分 :-)
    • 我是几年前写的,我还是很新。现在我惊恐地发抖,我提出了这个建议。使用接受的答案。
    • 别担心,我没用过,但正如我所说的:-)
    【解决方案3】:

    你需要两个脚本。

    第一个模拟浏览器行为的脚本,它将获取一个文件并将其发送到秒脚本,它将像常规文件上传脚本一样处理它。

    我猜你必须为第一个脚本使用“http_post_fields”,它似乎处理文件。 http://us2.php.net/manual/en/function.http-post-fields.php

    祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 2021-02-03
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多