Слабые файлы. Загрузка в узел завершается неудачно с invalid_arg_name - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь и не могу получить файл из s3 в слабый файл, через бот-узел, размещенный на сбой.

В проекте клюша, который я клонирую, используется аксиома для создания веб-запросов. Я делаю запрос на чтение файла s3 в строку, затем беру содержимое и помещаю его в запрос к files.upload . Files.upload принимает данные формы через сообщение.

Мне не совсем понятно, как структурировать параметр "file" данных формы для получения строки, но следующее возвращает ошибку "invalid_arg_name".

  var Readable = require('stream').Readable;
  // ...

  const upload = new FormData();
  upload.append("channels", destinationChannel);
  const s = new Readable();
  s.push("example s3 file content string");
  s.push(null);
  upload.append("file", s); 

  const config = { 
    headers: {'Authorization': "Bearer " + myAccessToken},
    'Content-Type': 'multipart/form-data',
  };

  axios.post(`${apiUrl}/files.upload`, upload, config)
    .then((result) => { 
      console.log('uploaded file'); 
      console.log(result.data);
   }); 

В документах также говорится, что он принимает форму в кодировке URL, но я не уверен, какая структура примет или , если справится с 10-ю килобайтами файлов, которые я хочу отправить через это метод.

Если мы сможем исправить этот метод, это было бы замечательно, но если есть более простой способ подачи общедоступного URL-адреса в slack-файл files.upload, я также воспользуюсь этим.

1 Ответ

0 голосов
/ 15 сентября 2018

Мне удалось заставить его работать, даже с 3-килобайтным файлом журнала, используя кодировку URL через строку запроса:

const upload = {
  channels: channel,
  content: "s3 file content",
};

console.log(upload);
const config = { 
  headers: { 'Authorization': "Bearer " + myAccessToken },
  'Content-Type': 'application/x-www-form-urlencoded' 
};
axios.post(`${apiUrl}/files.upload`, qs.stringify(upload), config)
  .then((result) => { 
    console.log('uploaded file'); 
  }).catch((err) => {
    console.log('err on files upload %0', err);
  });

Я не уверен, в каком размере это сломается, поэтому я хотел бы, чтобы форм-данные работали как-то.

...