Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check here.
Forum Discussion
Matthew S.22
9 years agoExplorer | Level 4
Javascript to Run Download Function on My Files?
Greetings, In a previous discussion, I solved how to upload files to pages in my app via a web form. Now I need to dynamically provide a "download" link to the file that was previously attached ...
- 9 years ago
Hi Matthew, the filesDownload method is the right way to directly download a file from a Dropbox account using the JavaScript SDK.
What do you have so far and what's giving you trouble in particular? There's a sample of using sharingGetSharedLinkFile available here for reference. When using filesDownload you would pass in a path (instead of a URL), but handling the response is the same.
For example, switching in the method, it would look something like this:
dbx.filesDownload({path: '/test.txt'}) .then(function(response) { var downloadUrl = URL.createObjectURL(response.fileBlob); var downloadButton = document.createElement('a'); downloadButton.setAttribute('href', downloadUrl); downloadButton.setAttribute('download', response.name); downloadButton.setAttribute('class', 'button'); downloadButton.innerText = 'Download: ' + response.name; document.getElementById('results').appendChild(downloadButton); }) .catch(function(error) { console.error(error); }); - 9 years agoYes, you can download with the shared link. For example, my version in my last post using filesDownload only requires the path, and not shared link.
Greg-DB
Dropbox Community Moderator
9 years agoHi Matthew, the filesDownload method is the right way to directly download a file from a Dropbox account using the JavaScript SDK.
What do you have so far and what's giving you trouble in particular? There's a sample of using sharingGetSharedLinkFile available here for reference. When using filesDownload you would pass in a path (instead of a URL), but handling the response is the same.
For example, switching in the method, it would look something like this:
dbx.filesDownload({path: '/test.txt'})
.then(function(response) {
var downloadUrl = URL.createObjectURL(response.fileBlob);
var downloadButton = document.createElement('a');
downloadButton.setAttribute('href', downloadUrl);
downloadButton.setAttribute('download', response.name);
downloadButton.setAttribute('class', 'button');
downloadButton.innerText = 'Download: ' + response.name;
document.getElementById('results').appendChild(downloadButton);
})
.catch(function(error) {
console.error(error);
});
Fabito
8 years agoExplorer | Level 4
Hi Greg
I am using your example to download a file from a Dropbox account using the JavaScript SDK. My code is this:
function downloadFile() {
var ACCESS_TOKEN = "<REDACTED>"; // Here the access token key
var dbx = new Dropbox({ accessToken: ACCESS_TOKEN });
dbx.filesDownload({ path: '/5. Productos de las LGAC/Estudiantes/Generación 2018-2020/Artículos/Ricardo-Derechos.pdf'})
.then(function(response){
var results = document.getElementById('results');
results.appendChild(document.createTextNode('File Downloaded!'));
console.log(response);
})
.catch(function (error) {
console.error(error);
});
return false;
}
But I can't get the file downloaded in my computer.
In my file html, I am reading the javascript to execute it in my button
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" media="screen" href="css/bootstrap.min.css">
<link rel="stylesheet" media="screen" href="css/stylo.css">
<script src="js/jquery-3.2.1.js"></script>
<script src="js/bootstrap.js"></script>
<script src="js/Dropbox-sdk.min.js"></script>
<title></title>
</head>
<body class="container" role="document">
<header>
<div id="encabezado"></div>
</header>
<main class="contenido">
<ul class="nav nav-tabs nav-justified pilas">
<li><a id="inactiva" href="inicio.html">Inicio</a></li>
<li><a id="inactiva" href="estrategias.html">Estrategias</a></li>
<li><a id="inactiva" href="admin.html">Administración</a></li>
<li><a id="inactiva" href="cargar.html">Cargar documentos</a></li>
<li class="active"><a id="activa" href="#">Contacto</a></li>
</ul>
<div class="panel panel-success panel-contenido">
<div class="panel-body">
<p>
</p>
<a name="boton" id="descargar" class="btn btn-primary" href="" onclick="downloadFile()"><span class="glyphicon glyphicon-cloud-download"></span> Descargar archivo</a>
<h2 id="results"></h2>
</div>
</div>
</main>
<footer>
<div id="data">
</div>
</footer>
</body>
</html>
Also, the file Ricardo-Derechos.pdf is on my Dropbox.
Can you help me to find my error?
- Greg-DB8 years ago
Dropbox Community Moderator
Fabito This is an old thread, so in order to not spam anyone else on it, please open a new thread for your question
Also, please let me know exactly what part of your code isn't working as expected, or what you're stuck on, and share the output or error you are getting. You don't seem to actually be accessing the 'response.fileBlob' in your code at all.
By the way, I redacted it from your post, but for the sake of security, you should disable that access token, since you posted it publicly. You can do so by revoking access to the app entirely, if the access token is for your account, here:
https://www.dropbox.com/account/connected_apps
Or, you can disable just this access token using the API:
https://www.dropbox.com/developers/documentation/http/documentation#auth-token-revoke
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!