I would like to create a PHP script to backup files from a particular directory on my website to my Dropbox account.
I tried to search for examples and how to work around it but I only found code to backup databases or to buy ready made solutions.
This is the code I tried
<?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);
}
?>
But instead of uploading the image from my PC to Dropbox via my website. I want to modify the above code to copy files in a specific directory on my website to Dropbox.
You need recursive code.
Write a function that takes a dir as its argument.
Have it loop through the dir looking at each file. For each file, it checks if it's a dir, and if it's not, it copies it.
If it is a dir, the function calls itself.
e.g.
Check out this answer maybe this is what You are looking for:
Dropbox API and PHP
Based on the code you have you want something along the lines of
I'm not 100% sure on the dropbox directory code as I've just pulled it out of your example and you may want to drop the first
/
in$dropboxdir
. But I'm sure you can figure that out.For reference the code for looping a directory is example #2 from http://php.net/manual/en/function.readdir.php
For recursive directory copying
In the question you have asked for help with using this https://github.com/jakajancar/DropboxUploader/ and I have given you code to do so, however if you read the github page it says
So it might be a good idea for you to look for an alternative.