Javascript Dropbox API-强制直接下载
我使用dropbox API将文件上传到dropbox,然后生成一个可共享的链接并将这些链接发送给用户 但问题是我想强制下载文件,而不是通过dropbox共享链接预览 我知道我可以在链接的末尾强制下载设置Javascript Dropbox API-强制直接下载,javascript,node.js,dropbox-api,Javascript,Node.js,Dropbox Api,我使用dropbox API将文件上传到dropbox,然后生成一个可共享的链接并将这些链接发送给用户 但问题是我想强制下载文件,而不是通过dropbox共享链接预览 我知道我可以在链接的末尾强制下载设置?dl=1,但是dropbox生成的可共享链接返回?dl=0 代码: request.put('https://api-content.dropbox.com/1/files_put/auto/reports/' + req.body.Name +'.pdf', {
?dl=1
,但是dropbox生成的可共享链接返回?dl=0
代码:
request.put('https://api-content.dropbox.com/1/files_put/auto/reports/' + req.body.Name +'.pdf', {
headers: {
Authorization: 'TOKEN',
'Content-Type': 'application/pdf'
},
body: content
}, function optionalCallback(err, httpResponse, bodymsg) {
if (err) {
console.log(err);
}
else {
console.log("File uploaded to dropbox successfully!");
fs.unlink(temp_dir + 'report.pdf', function(err) {
if (err)
throw err;
else {
console.log("file deleted from server!");
}
});
request.post('https://api.dropboxapi.com/1/shares/auto/reports/' + req.body.Name + '.pdf'+ '?short_url=false?dl=1', {
headers: {
Authorization: 'TOKEN'
}
}, function optionalCallback(err, httpResponse, bodymsg) {
if (err) {
console.log(err);
}
else {
console.log('Shared link 2 ' + JSON.parse(httpResponse.body).url);
res.json(JSON.parse(httpResponse.body).url);
}
});
}
});
我正在使用dropbox API的V1,该API不久将被弃用,但现在我需要使用它。使用
dl=1
URL参数是在这些链接上强制下载的正确方法。您可以在此处找到有关这方面的更多信息:
要正确地执行此操作,您应该使用实际的URL解析器来解析URL。然后,如果它已经有一个
dl
参数,则将其设置为1
。如果没有,则将dl
参数设置添加到1
您可以利用流,只需将下载流重定向到客户端。下面是一个使用我的简约包装器和路由配置的示例:
{
path: '/getFile',
method: 'GET',
handler: (request, response) => {
dropbox({
resource: 'files/download',
parameters: {
path: '/dropbox/image.jpg'
}
}, (err, result) => {
//download completed
}).pipe(response); //piping file stream
}
}