2

Webサイトの特定のディレクトリからDropboxアカウントにファイルをバックアップするPHPスクリプトを作成したいと思います。

例とその回避方法を検索しようとしましたが、データベースをバックアップするか、既製のソリューションを購入するためのコードしか見つかりませんでした。

これは私が試したコードです

<?php
  $passw = "jason"; //change this to a password of your choice.
  if ($_POST) {
    require 'DropboxUploader.php';


    try {
        // Rename uploaded file to reflect original name
        if ($_FILES['file']['error'] !== UPLOAD_ERR_OK)
            throw new Exception('File was not successfully uploaded from your computer.');

        $tmpDir = uniqid('/tmpCapes/');
        if (!mkdir($tmpDir))
            throw new Exception('Cannot create temporary directory!');

        if ($_FILES['file']['name'] === "")
            throw new Exception('File name not supplied by the browser.');

        $tmpFile = $tmpDir.'/'.str_replace("/\0", '_', $_FILES['file']['name']);
        if (!move_uploaded_file($_FILES['file']['tmp_name'], $tmpFile))
            throw new Exception('Cannot rename uploaded file!');

    if ($_POST['txtPassword'] != $passw)
            throw new Exception('Wrong Password');

        // Upload
    $uploader = new DropboxUploader('user@example.com', 'password');// enter dropbox credentials
        $uploader->upload($tmpFile, $_POST['dest']);

        echo '<span style="color: green;font-weight:bold;margin-left:393px;">File successfully uploaded to my Dropbox!</span>';
    } catch(Exception $e) {
        echo '<span style="color: red;font-weight:bold;margin-left:393px;">Error: ' . htmlspecialchars($e->getMessage()) . '</span>';
    }

    // Clean up
    if (isset($tmpFile) && file_exists($tmpFile))
        unlink($tmpFile);

    if (isset($tmpDir) && file_exists($tmpDir))
        rmdir($tmpDir);
}
?>

しかし、私のPCから私のウェブサイトを介してDropboxに画像をアップロードする代わりに。上記のコードを変更して、自分のWebサイトの特定のディレクトリにあるファイルをDropboxにコピーしたいと思います。

4

2 に答える 2

1

あなたが持っているコードに基づいて、次の行に沿って何かが必要です

require 'DropboxUploader.php';

$dirtocopy = './example_directory/';
$dropboxdir = '/backupdir/';
$uploader = new DropboxUploader('email@gmail.com', 'Password');// enter dropbox credentials

if ($handle = opendir($dirtocopy)) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != "..") {

            $uploader->upload($dirtocopy.$entry, $dropboxdir.$entry);

        }
    }
    closedir($handle);
}

私はあなたの例からそれを引き出したばかりなので、ドロップボックスのディレクトリコードについて100%確信が持てませ/$dropboxdir. しかし、私はあなたがそれを理解できると確信しています。

参考までに、ディレクトリをループするコードはhttp://php.net/manual/en/function.readdir.phpの例 #2 です。

再帰的なディレクトリ コピーの場合

require 'DropboxUploader.php';

function uploaddirtodropbox($dirtocopy, $dropboxdir, $uploader){
    if ($handle = opendir($dirtocopy)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {

                if(is_dir($entry)){
                    uploaddirtodropbox($dirtocopy.$entry.'/', $dropboxdir.$entry.'/', $uploader);
                } else {
                    $uploader->upload($dirtocopy.$entry, $dropboxdir.$entry);
                }

            }
        }
        closedir($handle);
    }
}

$dirtocopy = './example_directory/';
$dropboxdir = '/backupdir/';
$uploader = new DropboxUploader('email@gmail.com', 'Password');// enter dropbox credentials

uploaddirtodropbox($dirtocopy, $dropboxdir, $uploader);

このhttps://github.com/jakajancar/DropboxUploader/の使用に関するヘルプを求めた質問で、そのためのコードを提供しましたが、github ページを読むと、

その開発は、Dropbox が API をリリースする前に開始され、機能するために、Dropbox の Web サイトをスクレイピングします。したがって、今すぐ API を使用することができ、おそらく使用する必要があります。

そのため、代替手段を探すことをお勧めします。

于 2013-03-12T09:02:43.347 に答える