Я хотел бы узнать, можно ли получить точные двоичные данные с помощью обратного вызова от метода API Google NodeJS. Я знаю, что объект, возвращенный вызовом этой конечной точки API, является обычным объектом request
, который может быть, например, конвейер так:Получение содержимого двоичного файла вместо UTF-экранированного с использованием file.get
drive.files.get({
fileId: fileId,
alt: 'media'
}).pipe(fs.createWriteStream('test'));
Однако я хотел бы знать, если это возможно, чтобы получить двоичные данные в функции обратного вызова, используя следующий синтаксис:
drive.files.get({
fileId: fileId,
alt: 'media'
}, function(err, data) {
// Here I have binary data exposed
});
Насколько я знаю, это должно быть возможно получить что тип данных запроса в процессе его создания, проходя {encoding: null}
в request
параметры объекта, как это:
var requestSettings = {
method: 'GET',
url: url,
encoding: null // This is the important part
};
request(requestSettings, function(err, data) {/.../})`
однако, кажется, что Google скрывает это объект конфигурации в своей библиотеке.
Так что мой вопрос: возможно ли это сделать, не мешая/взломать библиотеку?
Это помогло мне решить мою проблему, спасибо. Но я не понимаю, почему это работает, когда стиль обратного вызова в вашем вопросе не работает. Какая кодировка передается 'data' в обратном вызове? Было бы правильно сказать, что [этот образец] (https://github.com/google/google-api-nodejs-client/blob/master/samples/drive/download.js) будет работать только для 'utf8 'файлы? – Mr5o1