[英]Download file from public dropbox link to server using node js
有没有办法通过公共链接从任何人的保管箱下载文件并将其保存到我的带有节点js的服务器上? 我需要一种没有任何身份验证的方法。 例如,如何从给定链接下载文件,例如https://www.dropbox.com/s/dr1cit55idwi1m0/english_buisness_message.txt?dl=0
如果尝试下载需要身份验证的内容,则还必须在项目中进行身份验证。 -没办法。
如果链接是公共的,那么您可以尝试这样的操作(注意,URL中的最后一个0更改为1):
var http = require('http');
var fs = require('fs');
var file = fs.createWriteStream("english_buisness_message.txt");
var request = http.get("https://www.dropbox.com/s/dr1cit55idwi1m0/english_buisness_message.txt?dl=1", function(response) {
response.pipe(file);
});
就我而言,下一个代码可以正常工作:
var link = "https://www.dropbox.com/s/dr1cit55idwi1m0/english_buisness_message.txt?dl=0"
var firstPart = link.split("=")[0];
link = firstPart + '=1';
var myFile = request(link).pipe(fs.createWriteStream('./dist/testtest.txt'));
myFile.write(resFull.data);
myFile.end(() => {
/..here is callback function../
})
Dropbox响应不是文件本身,而是重定向到文件实际所在的最终URL,因此,为避免获取空文件,必须遵循重定向 ,然后下载文件。 使用https
库执行此操作的一种简单方法是:
var https = require('https');
var fs = require('fs');
// (...)
var myDropboxURL = 'https://www.dropbox.com/s/dr1cit55idwi1m0/english_buisness_message.txt?dl=1';
var file = fs.createWriteStream('path/to/the/dest/file');
var request = (url) => {
https.get(url, (response) => {
if (response.statusCode == 302) { // it's a redirect!
request(response.headers.location);
} else {
response.pipe(fp);
file.on('finish', () => {
file.close(() => {
// You may do something here
});
});
}
}).on('error', (err) => {
// Do something if the request fails
});
// Here we start the request
request(myDropboxURL);
从其他答案中可以看出,首先您还应该更改查询字符串,使dl
为1
(这样您将获得文件而不是Dropbox的Web界面)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.