2015-10-07 11 views
6

Ho l'app nodo che uso express, nell'app ho bisogno di inviare tramite messaggio postale file zip (ad esempio dal postino al server nodo), attualmente utilizzo il parser del corpo come segue ma mi chiedo se questo è OK?utilizzando il parser del corpo per passare il file zip

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

Btw questo funziona, ma mi chiedo se lo uso giusto ...

+0

Ti aspetti di ricevere o inviare un file zip? – Filype

risposta

2

bodyParse.text() è significato per string tipo di corpo. Dalla documentazione:

bodyParser.text (opzioni)

Returns middleware che analizza tutti i corpi come una stringa ...

Dal momento che, si sta caricando i dati binari (ad es zip file), utilizzando bodyParser.text() sarà convert your buffer body to utf-8 string. Quindi perderai alcuni dati per i file binari e il file zip potrebbe essere illeggibile.

Per file binario, utilizzare bodyParser.raw(), che fornirà un buffer in req.body ed è possibile salvare in modo sicuro quel buffer in un file.

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

Per il caricamento dei file, si dovrebbe davvero guardare multer, che lavora per multipart/form-data tipo di contenuto.