Saya mencoba mengunggah gambar melalui Slack menggunakan node.js dan paket permintaan, tetapi tidak memiliki banyak keberuntungan. Entah saya menerima kesalahan invalid_array_arg
atau no_file_data
dari API.
Ini permintaan saya:
var options = { method: 'POST',
url: 'https://slack.com/api/files.upload',
headers:
{ 'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded' },
form:
{ token: SLACK_TOKEN,
channels: SLACK_CHANNEL,
file: fs.createReadStream(filepath)
} };
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
Saya telah melihat beberapa posting yang relevan:
- Dapatkah saya mengunggah gambar sebagai lampiran dengan Slack API?
- Slack API (files.upload) menggunakan NodeJS
- memperbaiki file.upload dari Buffer dengan opsi formData #307
Satu-satunya hal yang berhasil adalah menggunakan perintah curl secara langsung, tetapi menggunakan cygwin (CommandPrompt gagal: curl: (1) Protocol https not supported or disabled in libcurl
). Masalah memanggil curl dari node (menggunakan child_process
) tetapi gagal secara diam-diam di Command Prompt dan masih mengembalikan no_file_data
menggunakan cygwin (melewati jalur absolut ke file):
stdout: {"ok":false,"error":"no_file_data"}
stderr: % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 469 100 35 100 434 359 4461 --:--:-- --:--:-- --:--:-- 6112
Saya menggunakan node v6.9.1 di Windows.
Apa yang saya lewatkan? Bagaimana cara mengunggah gambar ke slack melalui node.js di Windows?
error: Response not OK: no_file_data Error: no_file_data
- person George Profenza   schedule 07.02.2018fs.createReadStream(filepath).stat()
katakan? - person Peter   schedule 07.02.2018console.log(fs.createReadStream(filename).stat()); ^ TypeError: fs.createReadStream(...).stat is not a function
- person George Profenza   schedule 07.02.2018'close'
gm
. Dalam kasus Anda, mungkin pendengar tersedia ketika file pdf selesai ditulis ke disk. Sebagai bukti konsep, Anda dapat mencoba hackysetTimeout
hingga 10 detik atau lebih (jika PDF tidak besar) untuk mengisolasi masalah dan mengonfirmasi bahwa itu adalah masalah yang sama. Jika itu masalahnya, idealnya Anda akan menghapus penundaan peretasan dan menggunakan acara yang benar. Maaf atas keterlambatan pengembalian. - person George Profenza   schedule 19.09.2019