Отправка файла и полей с данными как REST запрос из nodejs сервера на coffeescript
По началу кажется простой задачей - на stackoverflow активно рекомендуют модуль request, он правда классный. Гнётся во все стороны.. но..
- На сайте есть пример как отправить файл, но не бинарный, а текстовый. И почему то если натравить запрос с таким "файлом" опять же ноде(другому серверу) он не видится как файл
- Гуглить любые проблемы связанные с модулем крайне затруднительно - автор решил не задумываться и дал незамысловатое название, благодаря чему гуглится все, что угодно, только не то нужно.
request
method: 'POST'
# uri: "http://some.real.endpoint/here"
uri: 'http://localhost:5000/dump'
headers:
'content-type': 'multipart/form-data; moreinfo'
multipart: [
{
'Content-Disposition': "form-data; name=\"image\"; filename=\"imagefile\""
'Content-Type': image.type
'body': fs.readFileSync(image.path)
},
{
'Content-Disposition': 'form-data; name="photoCount"'
'body': "#{photoCount}"
},
{
'Content-Disposition': 'form-data; name="configuration"'
'body': configuration
},
{
'Content-Disposition': 'form-data; name="comment"'
'body': comment
},
{
'Content-Disposition': 'form-data; name="mask"'
'body': "#{10}"
},
]
, (error, response, body) ->
console.log body
res.json
result: true
Самый простой способ проверить - послушать, что приходит с помощью netcat:
rux@ruHome:~$ nc -l 5000
POST /dump HTTP/1.1
content-type: multipart/form-data; boundary=d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
host: localhost:5000
content-length: 635
Connection: keep-alive
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
Content-Disposition: form-data; name="image"; filename="imagefile"
Content-Type: image/jpeg;
Uploaded file /tmp/997ff2e734b2929fe5f8f1a8b8a433df content here
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
Content-Disposition: form-data; name="photoCount"
1
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
Content-Disposition: form-data; name="configuration"
CFG_1x1
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
Content-Disposition: form-data; name="comment"
API_TEST
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b
Content-Disposition: form-data; name="mask"
10
--d2b3c603-7d16-49e3-8b7f-5daf6a466e6b--
Часа четыре такая ерунда отняла..