Ich benutze den Google API Node-Client, um eine PDF-Datei von meinem Google-Laufwerk herunterladen, aber ich kann nicht herausfinden, wie Sie auf die Daten von der service.files.get
Funktion zugreifen. Mein Code ist wie folgt:Pipe Daten zu string Google Node API
function download(auth, fileId) {
var service = google.drive('v3');
var dest = fs.createWriteStream('something.pdf');
service.files.get({
auth: auth,
fileId: fileId,
alt: 'media'
})
.on('data', function(chunk){
console.log(chunk.toString()); // this gives me a JSON response of my bearer token, and not the pdf data
})
.on('end', function() {
console.log('Done');
})
.on('error', function (err) {
console.log('Error during download', err);
})
.pipe(dest);
}
ich diesen Download verwenden einen Anhang per E-Mail zu senden. Ich möchte die Datei nicht über die Variable dest
auf meiner Festplatte speichern und würde stattdessen lieber eine base64-codierte Zeichenfolge aus der download
-Funktion zurückgeben, aber ich kann nicht auf die eingehenden Daten von der API-Anfrage zugreifen. Kann mir jemand auf das richtige Ziel hinweisen, um darauf zuzugreifen?
Die Datei wird ordnungsgemäß heruntergeladen, wenn ich den Code so ausführe, wie er ist, aber ich kann nicht herausfinden, woher die .pdf-Daten gestreamt werden oder wie auf ihr "Daten" -Ereignis zugegriffen wird.
Wenn ich dies tun, ich bin nur noch ein JSON-Objekt enthält meine Authentifizierungs-Token bekommen, und ich bin nicht sicher, warum. Die Datei wird heruntergeladen, aber aus irgendeinem Grund kann ich nicht auf die Daten zugreifen. Könnte die Google API etwas seltsam machen und keinen Zugriff auf diese Informationen bieten? –
Nachdem Sie sich die Schnellstart-Dokumentation zu Google Node.js-API-Clients angesehen haben, sieht es so aus, als ob Sie kein Streaming-Management benötigen. Sie sollten in der Lage sein, auf die Datei als zweites Argument zuzugreifen, das an den Rückruf übergeben wurde, der nach dem Abschluss ausgelöst wurde. service.files.get ({...}, function (err, resp)) {resp.resource ...}) Anforderungskörper angeben 'Der Hauptteil der Anforderung wird im Ressourcenparameterobjekt des Objekts angegeben anfordern.' (https://github.com/google/google-api-nodejs-client#usage) https://developers.google.com/drive/v3/web/quickstart/nodejs – Clark
Clark Sie haben zwar recht, aber Die Daten werden nicht wie angegeben von resp.resource übergeben. Ich glaube, das ist nur für Anfragen. Siehe meine Antwort oben. Danke für die Hilfe! –