0

Unix マシンから Windows マシンにファイルを転送する必要があります。問題は、自分のマシンで既に作成されているファイルを ftp 経由で UNIX から任意のマシンに転送できることです。また、webdav 接続を開いて新しいファイルを作成し、そこに保存することもできます。

私ができないことは、webdav を使用してローカルの場所からファイルをアップロードするコードを書くことです。

私は pear クライアントを使用してみましたが、ドキュメントが不足しているため、まだタスクを達成できません。

これが私の試みです:

include("/usr/share/pear/HTTP/WebDAV/Client.php");
global $filename, $logger;
    try {
     /*   $client = new HTTP_WebDAV_Client();
        $user="username";
        $pass = "pwd";
        $dir = "webdavs://".$user.":".$pass."@hostname/";
        var_dump($client->stream_open($dir."test4.txt","w",null,$path));
        $client->stream_write("HELLO WORLD! , I am great ");
        $client->stream_close();
        $client->dir_opendir($dir,array());
        var_dump($client->dirfiles);


        $req =new HTTP_Request($dir);
        $req->setBasicAuth($user, $pass);
        $req->setMethod(HTTP_REQUEST_METHOD_POST);

        $result = $req->addFile('file_upload_field', $filename);
        if (PEAR::isError($result)) {
            echo $result->getMessage();
        } else {

            $response = $req->sendRequest();

            if (PEAR::isError($response)) {
                echo $response->getMessage();
            } else {
                echo $req->getResponseBody();
            }
        }*/

        $ftp_server = "hostname-ftp";
        //$ftp_server = "hostname-webdav";
        $connection = ftp_connect($ftp_server);
        ftp_login($connection, 'user', 'pwd);
        ftp_put($connection, $filename, $filename, FTP_BINARY);
        unlink($filename);
    } catch(Exception $e){
        $message = "There was a problem while uploading" . $filename;
        $logger->error($message);
    }
4

1 に答える 1

1

それは大変な電話でしたが、私はそれを理解しました。コードスニペットを追加しているので、誰かに役立つかもしれません. ファイルをアップロードする代わりに、そのファイルをデータ ストリームに変換し、そのデータ ストリームを webdav サーバーにストリームを書き込む呼び出しにコピーしました。

try {
        $filecsv = file_get_contents($filename);
        $client = new HTTP_WebDAV_Client_Stream();
        $user="user";
        $pass = "pass";
        $dir = "webdavs://".$user.":".$pass."@hostname/";

        $client->stream_open($dir."db_user_exports.csv","w",null,$path);
        $client->stream_write($filecsv);
        $client->stream_close();
        unlink($filename);

    } catch(Exception $e){
        $message = "There was a problem while uploading" . $filename;
        $logger->error($message);
    }
于 2012-08-10T03:51:18.347 に答える