Как потоковая загрузка, которая не является multipart в sailsjs

Я только что прочитал документацию паруса-шкипера. Похоже, хороший способ обработки загрузки нескольких файлов.

Тем не менее, что, если я хочу передать потоковое видео, не являющееся составной частью? - в моем текущем случае это простая загрузка "text/csv".

Я пытался просто использовать request.pipe ... но это не похоже на работу.

1 ответ

И ответ... шкипер здесь не поможет. Скорее (так же, как в обычном экспресс-приложении), используйте промежуточное ПО перед шкипером, который устанавливает req._body = true обмануть вышестоящий bodyParser (который по умолчанию является шкипером для парусов).

В моем случае в config / http.js:

var typeIs = require('type-is');

module.exports.http = {

  middleware: {

    order: [
      ...
      'dontParseCSV',
      ...
      'bodyParser',
      ...
    ],
    dontParseCSV: function (req, res, next) {
      if(typeIs(req, 'csv')) {
        // fool body parser into thinking already parsed
        // so we can stream csv
        req._body = true;
      }
      next();
    },
  ...
  }
};

Маршрутизатор идет после bodyParser, так что может быть немного неудобно делать это только для определенного маршрута (по крайней мере, если вы хотите, чтобы маршрутизатор распознал маршрут, а не просто взломал регулярное выражение:)). В моем случае все другие мои маршруты принимают только json, так что это не проблема.

Другие вопросы по тегам