2015-04-20 15 views
11

Sto sviluppando un'API RESTful per un'applicazione client mobile con la combinazione di Node.js, Express.js e Mongodb. Ora sto cercando di gestire il caricamento dell'immagine del profilo utente e ho trovato un modulo chiamato "multer" (che è quello consigliato dal team express.js stesso) che consente a express.app di gestire multipart/form -Data richieste. Ora ho bisogno di testare l'app e, inoltre, la funzione di upload, ma non sono in grado di simulare una richiesta di formato http (tramite il plugin postman chrome). Multer restituisce questo errore:Carica file nell'app Express.js

[Errore: multipart: Boundary non trovato]

Infatti, confrontando una richiesta HTTP-forma (che funziona) con una richiesta personalizzato http, la seconda non ha la Proprietà dell'intestazione di confine.

Quale proprietà del perimetro è?

risposta

8

Il limite in una forma multiparte indica una stringa di delimitazione che separa testo e dati binari. Puoi farlo nel postino ma sembra che tu non stia inviando sia file che testo in modo che il postino possa essere impostato su un modulo normale. vedete qualcosa di simile:

postman-form-multipart

Se si sceglie Anteprima nel postino è possibile vedere il confine nell'intestazione Content-type e nel corpo.

+7

Inoltre, ho scoperto che non è necessario specificare manualmente la proprietà Content-Type ... Nel caso lo si faccia si ottiene lo stesso errore. –

35

Se si utilizza Postman, è possibile provare a rimuovere l'intestazione: "Tipo di contenuto": "multipart/form-data". L'ho rimosso e ora funziona.

+1

Sì, questo funziona; ma in uno scenario di parole reali, l'intestazione 'Content-Type' sarà in realtà 'multipart/form-data'. Multer funziona correttamente in quel caso? – scaryguy

+0

@scaryguy: Postman lo aggiunge per impostazione predefinita –

+0

Questo ha funzionato anche con ES6 'fetch', anche. – brandones