@yazux

Как правильно обработать запрос на node.js с использованием multiparty?

В учебных целях решил написать сжималку для изображений. С node.js ранее знаком не был.
Ссылка на код на github
Изображения загружаю при помощи multiparty.
Столкнулся с проблемой: при обработке запроса нода вываливается с ошибкой:

Error form: Error: stream ended unexpectedly
    at Form.<anonymous> (/projects/node/fileupload/node_modules/multiparty/index.js:754:24)
    at emitNone (events.js:91:20)
    at Form.emit (events.js:185:7)
    at finishMaybe (_stream_writable.js:515:14)
    at endWritable (_stream_writable.js:525:3)
    at Form.Writable.end (_stream_writable.js:490:5)
    at IncomingMessage.onend (_stream_readable.js:511:10)
    at IncomingMessage.g (events.js:291:16)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:74:11)
    at process._tickCallback (internal/process/next_tick.js:98:9)

Картинка на сервер заливается, но дальше запрос не идёт, всё падает на 104 строчке файла app.js

Кроме этого, перед отправкой изображения браузер шлёт на сервер OPTION запрос, нода выдаёт ошибку на отсутствие boundary части в заголовке content-type, прописал её руками в заголовках, подобный костыль не будет давать спать по ночам, сам не нашёл информации о данной ситуации.

Подскажите как решить эти 2 проблемы, знакомых, знающих ноду, к сожалению нет.
  • Вопрос задан
  • 411 просмотров
Решения вопроса 1
@yazux Автор вопроса
Проблему решил.
Использовал express-fileupload (пример) вместо multiparty и в ajax запросе установил contentType: false, вместо contentType: multipart/form-data.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
megafax
@megafax
web-программист
Попробуйте использовать busboy вместо multiparty. Также проверьте приложение на CORS заголовки, если отправляется OPTION запрос
Ответ написан
@shelomanovd
самый простой вариант. Bodyparser и все из тела вытаскивай чанки. Пуш в массив и доставай потом. Все изображение есть
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы