Чтение файла в Discord из папки Dropbox с использованием JavaScript

#javascript #api #discord.js #dropbox

#javascript #API #discord.js #dropbox

Вопрос:

В настоящее время я работаю над тем, чтобы заставить Discord-бота подключаться к каталогу внутри Dropbox, я использую Discord.js и Dropbox JavaScript SDK, и я сделал следующее:

 module.exports = {
  name: "dropbox",
  description: "Commands for interacting with a dropbox folder",
  execute(message, args) {
    var iso = require("isomorphic-fetch");
    var Dropbox = require("dropbox").Dropbox;
    var dbx = new Dropbox({ accessToken: "ACCESS_TOKEN", fetch: iso });
    dbx
      .filesListFolder({ path: "" })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
    dbx
      .filesDownload({ path: "/test.json" })
      .then(function (response) {
        console.log(response);
      })
      .catch(function (error) {
        console.log(error);
      });
  },
};
  

И я получаю следующие данные ответа:

 {
  name: 'test.json',
  path_lower: '/test.json',
  path_display: '/test.json',
  id: 'id:rXD9HpHY8HAAAAAAAAAOEw',
  client_modified: '2020-08-24T20:29:51Z',
  server_modified: '2020-08-24T20:29:51Z',
  rev: '015ada572d4487c00000001e8da14d0',
  size: 45,
  is_downloadable: true,
  content_hash: '8864f0de005b2729263a68f88c1f2201049c0a37e5d4f033b3821d590d3a9f71',
  fileBinary: <Buffer 7b 0d 0a 20 20 22 76 61 6c 75 65 22 3a 20 22 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 4a 53 4f 4e 20 66 69 6c 65 22 0d 0a 7d 0d 0a>
}
  

Но я не уверен, как поступить с этими данными, нужно ли мне преобразовать хэш содержимого обратно в файл json? Или мне нужно использовать Node.js файловый стример (fs) для доступа к нему? Что, по моему мнению, не позволило бы использовать Dropbox SDK, когда я могу использовать API вместо этого, или есть другой способ чтения файлов, для которых мне нужно загрузить пакет?

Извините, если это очевидное решение, которое я не получаю, я не могу найти никакой четкой информации о том, как действовать, и любая информация будет оценена.

Ответ №1:

JavaScript SDK для Dropbox API выполняет работу по взаимодействию с серверами Dropbox API за вас. В случае загрузки файла с помощью filesDownload из Dropbox SDK в Node, это делает результирующие данные файла доступными для вас в fileBinary поле. Вы можете прочитать данные из этого Buffer , как в этом примере.

( content_hash Поле представляет собой «хэш» данных файла, а не сами данные файла. Вы можете найти информацию об этом здесь.)

Комментарии:

1. У вас есть какая-либо информация о том, как отправлять изображения? В настоящее время я filesDownload получаю двоичный файл изображения и использую var blob = new Blob([response.fileBinary], { type: "image/png" }); , но я не могу найти способ отправить его, так как при попытке запуска появляется ошибка UnhandledPromiseRejectionWarning: TypeError: Only absolute URLs are supported console.log(blob)