2012-08-09 37 views
0

我需要将文件从我的Unix机器传输到Windows机器。问题是我可以通过ftp从unix传输已经在我的机器上创建的文件到任何机器。我也可以打开webdav连接创建新文件并将其保存在那里。使用WebDav协议从Unix上传文件

我无法做的是写我的代码来使用webdav从我的本地位置上传我的文件。

我尝试过使用梨客户端,但由于缺乏文档,我仍然无法完成任务。

这里是我的尝试:

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); 
    } 

回答

1

这是一个togh电话,但我理解了它。我正在添加我的代码片段,以便对某人有所帮助。我没有上传文件,而是将该文件转换为数据流,然后将该数据流复制到我在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); 
    }