2016-03-29 28 views
1

dan indirme Ben Google Drive dosyaları indirmek için kod parçası vardır:NodeJS - Google Drive

function downloadDrive(fileId, callback) { 
    var fileExt = fileId.split("."); 
    var file = Date.now() + "." + fileExt[fileExt.length - 1]; 
    var dest = fs.createWriteStream("./files/"+file); 
    service.files.get({ 
    auth: oauth2Client, 
    fileId: fileExt[0], 
    alt: "media" 
    }) 
    .on("finish", function() { 
    callback(file); 
    }) 
    .on("error", function(err) { 
    console.log("Error during download", err); 
    }) 
    .pipe(dest); 
} 

Küçük dosyalar ~ 500MB çok iyi çalışıyor. Ancak, oldukça büyük bir gzip dosyası indirmeye çalışırken ~ 3Gb, aşağıdaki hatayı atar.

buffer.js:23 
    const ui8 = new Uint8Array(size); 
      ^

RangeError: Invalid typed array length 
    at new Uint8Array (native) 
    at createBuffer (buffer.js:23:15) 
    at allocate (buffer.js:98:12) 
    at new Buffer (buffer.js:53:12) 
    at Function.Buffer.concat (buffer.js:225:16) 
    at BufferList.copy (/Synology/server_Metagenomics/server/node_modules/googleapis/node_modules/google-auth-library/node_modules/request/node_modules/bl/bl.js:124:21) 
    at BufferList.slice (/Synology/server_Metagenomics/server/node_modules/googleapis/node_modules/google-auth-library/node_modules/request/node_modules/bl/bl.js:99:15) 
    at BufferList.toString (/Synology/server_Metagenomics/server/node_modules/googleapis/node_modules/google-auth-library/node_modules/request/node_modules/bl/bl.js:166:15) 
    at Request.<anonymous> (/Synology/server_Metagenomics/server/node_modules/googleapis/node_modules/google-auth-library/node_modules/request/request.js:1035:36) 
    at emitOne (events.js:82:20) 
    at Request.emit (events.js:169:7) 

Bu konuda pek fazla bilgi bulamadım. Ne oluyor?

cevap

0

Dosyayı indirmeyi deneyebilirsiniz. Büyük dosya indirdiğinizden hata görünüyor.

var filename = 'zzz.txt'; 
var proxyUrl = "http://" + user + ":" + password + "@" + host + ":" + port; 
var token = 'YOUR_TOKEN'; 

var req = request.get('https://www.googleapis.com/drive/v3/files/YOUR_FILE_ID?alt=media', { 
    'auth': { 
     'bearer': token 
    }, 
    'proxy': proxyUrl 
}).on('response', function(res) { 

// create file write stream 
var fws = fs.createWriteStream(filename); 

// setup piping 
res.pipe(fws); 

res.on('err', function() { 
    console.log("error occured....."); 
}); 

res.on('end', function() { 
    console.log('Done'); 
    // go on with processing 
}); 
}); 
İlgili konular