Mam problem z pobieraniem plików binarnych z Dysku przy użyciu interfejsu API, w kółko.Czytanie pliku binarnego z Dysku Google przy użyciu pliku node.js
Oto odpowiednie bity kod:
// Load client secrets from a local file.
fs.readFile('client_secret.json', function processClientSecrets(err, content) {
if (err) {
console.log('Error loading client secret file: ' + err);
return;
}
// Authorize a client with the loaded credentials, then call the
// Drive API.
oauth.authorize(JSON.parse(content), dasm.init, driveapi.getFile)
});
driveapi.getFile:
function getFile(auth, cb) {
var service = google.drive('v3');
service.files.get({
auth: auth,
pageSize: 20,
fileId: "0B2h-dgPh8_5CZE9WZVM4a3BxV00",
alt: 'media'
}, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
cb(response)
});
}
Teraz response
wydaje się wracać jako ciąg znaków. Kiedy próbuję nawrócić się na szesnastkowy, zaczyna się szaleć. Czy istnieje sposób, aby wziąć response
i dostać go do Buffer
? Czy jest uszkodzony przez sekundę, którą otrzymałem od service.files.get
?
nakrętkami, to znaczy, że
console.log(
arrData[0].charCodeAt(0).toString(2),
'-',
arrData[1].charCodeAt(0).toString(2),
'-',
arrData[2].charCodeAt(0).toString(2),
'-',
arrData[3].charCodeAt(0).toString(2),
'-',
arrData[4].charCodeAt(0).toString(2)
)
= 1001101 - 1011010 - 1111111111111101 - 0 - 11 (używam binarne, aby spróbować zobaczyć, co jest zepsute)
Prawidłowe hex byłoby 4D 5A 90 00 03
Edit: dla tych, którzy są zdezorientowani, jak ja, jak 90
stał fffd
jest to Unicode replacement character który zostanie wyświetlony, gdy wartość nie mapuje do char ASCII.
Przykład ten wydaje się tylko do pracy przy ustalaniu 'responseType =„arraybuffer”', coś nie wydaje się być w stanie zrobić z napędem API. Twój przykład kodu zwraca ogólny obiekt o zerowej długości. – Drazisil