Слабые файлы. Загрузка в узел завершается неудачно с invalid_arg_name
Я пытаюсь и не удается получить файл из s3 в слабый файл, через бот-узел, размещенный на глюк.
Проект Glitch, который я клонирую, использует аксиому для создания веб-запросов. Я делаю запрос на чтение файла 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 ответ
Я смог заставить его работать, даже с 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);
});
Я не уверен, в каком размере это сломается, поэтому я хотел бы, чтобы формдаты работали как-то.