使用节点js从公共Dropbox链接下载文件到服务器

时间:2018-05-31 10:32:31

标签: javascript node.js api dropbox

有没有办法通过公共链接从anyones dropbox下载文件并将其保存在我的服务器上,并带有节点js?我需要一种没有任何类型身份验证的方法。例如,我如何从这个ng-class

这样的给定链接下载文件

3 个答案:

答案 0 :(得分:0)

如果您尝试下载需要身份验证的内容,那么您也必须在项目中进行身份验证。 - 没有办法。

如果链接是公开的,那么您可以尝试这样的事情(请注意,网址中的最后一个0更改为1):

def function:
    obj=X()
    print matrix

class X():
    def __init__():
        self.A = numpy.zeros([len(self.words), self.dcount])
        for i, k in enumerate(self.words):
            for d in self.wdict[k]:
                self.A[i,d] += 1 
        global matrix
        matrix = self.A
        print matrix
        # make some changes in self.A
        .
        .
        .  

if __name__ == "__main__": 
    function()

答案 1 :(得分:0)

在我的情况下,下一代码正常工作:

    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../
     })

答案 2 :(得分:0)

Dropbox响应不是文件本身,而是重定向到文件确实存在的最终网址,因此要避免获取空文件,您必须按照重定向 进行操作然后下载文件。使用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);

正如其他答案所示,首先您还应该更改查询字符串,以便dl1(这样您就可以获取文件而不是Dropbox的网络界面)。