I created a few buttons and onlick of the button url and filename is send to dynamic array and when i click dropbox saver button i want the saver function uses that dynamic array to send the files to dropbox. My current code gives me this error:Missing files.See Documentation.
Its seems that i didnt save the data correctly to array and i didnt pass it correctly to saver funciton. could any one help me fix this problem.Thanks
Note: i just want to use my dynamic array instead of hardcoded url and filenames as shown here:
Edited: I add options.files = files; before calling dropbox.save and declared my array outside addtoarray function . Now i get this error:G is undefined at dropins.js(line 1).
files: [
{'url': '<?PHP echo $imagePath1_Value; ?>', 'filename': '1.jpg'},
{'url': '<?PHP echo $imagePath2_Value; ?>', 'filename': '2.jpg'},
{'url': '<?PHP echo $imagePath3_Value; ?>', 'filename': '3.jpg'},
],
Dropbox Api Js:
<script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="xxxxxxxxxxxxxx"></script>
<script>
Saveing fileurl and filename to array function:
var i=1;
files = new Array();
function addtoArray(a,b){
alert("URL:"+a+"\nFileName:"+b);
files[i] = { url: +a, filename: +b };
i++;
};
Dropbox savers function:
function saver(){
var options = {
//here i want to use array i created above instead of hardcode filepath and filenames
//files: [
// You can specify up to 100 files.
// ...
//{'url': '<?PHP echo $imagePath1_Value; ?>', 'filename': '1.jpg'},
//{'url': '<?PHP echo $imagePath2_Value; ?>', 'filename': '2.jpg'},
//{'url': '<?PHP echo $imagePath3_Value; ?>', 'filename': '3.jpg'},
//],
// Success is called once all files have been successfully added to the user's
// Dropbox, although they may not have synced to the user's devices yet.
success: function () {
// Indicate to the user that the files have been saved.
alert("Success! Files saved to your Dropbox.");
},
// Progress is called periodically to update the application on the progress
// of the user's downloads. The value passed to this callback is a float
// between 0 and 1. The progress callback is guaranteed to be called at least
// once with the value 1.
progress: function (progress) {},
// Cancel is called if the user presses the Cancel button or closes the Saver.
cancel: function () {},
// Error is called in the event of an unexpected response from the server
// hosting the files, such as not being able to find a file. This callback is
// also called if there is an error on Dropbox or if the user is over quota.
//error: function (errorMessage) {}
error:function (errorMessage) { alert("ERROR: " + errorMessage); }
};
options.files = files;
Dropbox.save(options);
};
</script>
Body of html:
<body>
<button onclick="addtoArray('<?PHP echo $imagePath1_Value; ?>','filename1.jpg')">add to array</button>
<button onclick="addtoArray('<?PHP echo $imagePath2_Value; ?>','filename2.jpg')">add to array</button>
<button onclick="saver()">save</button>
You can build your
files
array however you want, as long asoptions.files
array contains the necessary information when you callDropbox.save
. E.g., append to a sharedfiles
variable when you calladdtoArray
(right now it looks like you are making a new one each time) and then setoptions.files = files
before callingDropbox.save
.