APIを使用してドライブからバイナリを取得する際に問題が発生しています。ここで Googleドライブからnode.jsを使用してバイナリファイルを読み取る
は、関連するコード・ビットです:// 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)
});
}
さて、response
が戻って文字列として来ているように見えます。私が16進数に変換しようとすると、ナットになります。 response
を取得してBuffer
に登録する方法はありますか?それとも、私はservice.files.get
からそれを得る秒が壊れていますか?正しい六角は次のようになり11(私が壊れているかを確認しようとするバイナリを使用しています)
から1111111111111101 - - 1011010から0ナットで
、私は
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という意味します4D 5A 90 00 03
編集:私のように、どのように90
がfffd
になったのか混乱している人のために、値がASCII文字にマップされていないときに表示されるのはUnicode replacement characterです。
この例では、唯一の '' responseType =「arraybuffer」を設定する際に動作しているようですが、私は表示されません何かがドライブのAPIで行うことができるようにします。コード例は、長さゼロの汎用オブジェクトを返します。 – Drazisil