gpt4 book ai didi

php - 如何仅使用 PHP 将文件从特定目录备份到 Dropbox?

转载 作者:行者123 更新时间:2023-12-04 05:07:23 25 4
gpt4 key购买 nike

我想创建一个 PHP 脚本来将文件从我网站上的特定目录备份到我的 Dropbox 帐户。

我试图搜索示例以及如何解决它,但我只找到了备份数据库或购买现成解决方案的代码。

这是我试过的代码

<?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。我想修改上面的代码以将我网站上特定目录中的文件复制到 Dropbox。

最佳答案

你需要递归代码。

编写一个以 dir 作为参数的函数。

让它循环查看每个文件的目录。对于每个文件,它检查它是否是一个目录,如果不是,则复制它。

如果是目录,则函数调用自身。

例如

// your code
require 'DropboxUploader.php';

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

$errors = array(); // to store errors.


// function definition
function copyDirRecursive($dir) {
global $uploader; // makes the "$uploader" below the one from outside the function
if(is_dir($dir)) { // added if/else to check if is dir, and create handle for while loop
$handle = opendir($dir);
if($handle === false) { // add if statements like this wherever you want to check for an error
$errors[] = $php_errormsg; // http://php.net/manual/en/reserved.variables.phperrormsg.php
}
} else {
return false;
}
while(false !== ($file = readdir($handle))) { // changed foreach to while loop
if(!isdir($file)) {
// copy the file
// cp $dir . '/' . $file to $dropbox . '/' . $dir . '/' . $file; // pseudocode
// below is actual code that hopefully will work
$uploader->upload($dir.$file,$dropboxdir.$file);
} else {
if(!is_link($file)) { // probably best not to follow symlinks, so we check that with is_link()
copyDirRecursive($dir . '/' . $file); // recursion time
}
}

}
}

// CALL THE FUNCTION
copyDirRecursive($dirtocopy); // you have to call a function for it to do anything

print_r($errors); // use this or var_dump($errors) to see what errors came up

关于php - 如何仅使用 PHP 将文件从特定目录备份到 Dropbox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15356766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com