2015-10-07 20 views
6

Mam aplikację węzła, która używa ekspresowego, w aplikacji potrzebuję wysłać przez wiadomość pocztową plik zip (np. Z listonosza do serwera węzła), obecnie używam parsera ciała tak jak ale zastanawiam się, czy to jest w porządku?używając parsera ciała do przekazania pliku zip

app.use(bodyParser.urlencoded({extended: false})); 
app.use(bodyParser.json()); 
app.use(bodyParser.text({ 
    type: 'application/text-enriched', 
    limit: '10mb' 
})); 

Btw to działa, ale zastanawiam się, czy mogę użyć go w prawo ...

+0

Czy spodziewasz się otrzymać lub wysłać plik zip? – Filype

Odpowiedz

2

bodyParse.text() jest przeznaczona dla string typu ciała. Z dokumentacji:

bodyParser.text (opcje)

Zwraca middleware, który analizuje wszystkie ciała jako ciąg ...

Ponieważ jesteś przesyłania danych binarnych (np zip plik), używając bodyParser.text() będzie convert your buffer body to utf-8 string. Utracisz więc trochę danych dla plików binarnych, a plik zip może być nieczytelny.

Dla pliku binarnego należy użyć bodyParser.raw(), co da bufor w postaci req.body i można bezpiecznie zapisać ten bufor w pliku.

app.use(bodyParser.raw({ 
    type: 'application/octet-stream', 
    limit: '10mb' 
})); 

Do wysyłania plików, naprawdę powinieneś spojrzeć na multer, który pracuje dla multipart/form-data content-type.

Powiązane problemy