Возникла необходимость сохранения данных на Яндкс Диске. Погуглив нашёл класс для работы с ЯндексДиском с помощью базовой авторизации без использования Oauth - https://github.com/KhArtNJava/phpYandexDisk
Написал обёртку для данного класса:
Написал обёртку для данного класса:
<?
require_once('class_webdav_client.php');
class yandexDiskException extends Exception { }
class yandexDisk {
/**
* @var webdav_client
*/
var $wdc;
var $errorMsg = '';
public function __construct($login, $password){
$this->wdc = new webdav_client();
$this->wdc->set_server( 'ssl://webdav.yandex.ru' );
$this->wdc->set_port( 443 );
$this->wdc->set_user( $login );
$this->wdc->set_pass( $password );
// use HTTP/1.1
$this->wdc->set_protocol( 1 );
// enable debugging
$this->wdc->set_debug( true );
if ( !$this->wdc->open() ) {
throw new yandexDiskException("Error: could not open server connection");
}
// check if server supports webdav rfc 2518
if ( !$this->wdc->check_webdav() ) {
throw new yandexDiskException('Error: server does not support webdav or user/password may be wrong');
}
}
public function __destruct(){
$this->wdc->close();
flush();
}
public function createFolder($folderName){
if (empty($folderName)) {
$this->errorMsg = 'Folder Name could not be empty';
return false;
}
$http_status = $this->wdc->mkcol( '/'.$folderName.'/' );
switch ($http_status){
case 201:
return true;
break;
default:
$this->errorMsg = 'Error ocured '.$http_status;
return false;
break;
}
}
public function uploadFile($source_file, $destination_folder, $destination_filename = ''){
if (empty($source_file)) {
$this->errorMsg = 'File could not be empty';
return false;
}
if (empty($destination_folder)) {
$this->errorMsg = 'Destination could not be empty';
return false;
}
if (empty($destination_filename)) {
$pathinfo = pathinfo($source_file);
$destination_filename = $pathinfo['basename'];
}
$http_status = $this->wdc->put_file( '/'.$destination_folder.'/'.$destination_filename, $source_file );
switch ($http_status){
case 200:
case 201:
case 204:
return true;
break;
default:
$this->errorMsg = 'Error ocured '.$http_status;
return false;
break;
}
}
public function downloadFile($serverFilePath, $localFilePath){
if (empty($serverFilePath) || empty($localFilePath)) {
$this->errorMsg = 'File Path could not be empty';
return false;
}
$res = $this->wdc->get_file( $serverFilePath, $localFilePath );
return $res;
}
public function publishFile($filePath){
if (empty($filePath)) {
$this->errorMsg = 'File Path could not be empty';
return false;
}
$res = $this->wdc->filePublish( $filePath );
return $res;
}
public function unPublishFile($filePath){
if (empty($filePath)) {
$this->errorMsg = 'File Path could not be empty';
return false;
}
$res = $this->wdc->fileUnPublish( $filePath );
return $res;
}
}
?>
Пример использования:<?
include_once('yandexDisk.php');
try {
$yandexDisk = new yandexDisk('login', 'password');
$res = $yandexDisk->createFolder('test');
$res = $yandexDisk->uploadFile('test.png', 'test');
$res = $yandexDisk->publishFile('/test/test.png');
$res = $yandexDisk->downloadFile('/test/test.png', 'test222.png');
}catch (yandexDiskException $e){
echo $e->getMessage();
}
Комментариев нет:
Отправить комментарий