2015-04-21 17 views
6

Recentemente sono venuto ad affrontare un problema insolito durante la pubblicazione di un modulo. Il post del modulo funziona correttamente quando non esiste un allegato o la dimensione del file di immagine dell'allegato è inferiore a 100kb. Ma quando ho provato a caricare un file più grande di 100kb nessun elemento nel modulo è stato postato/inviato. Quando I console.log() il valore è indefinito. Non riesco a capire quale sia la causa del problema. Nessun errore è mostrato sullo schermo della console. Qualcuno può aiutare con questo problema?Sails.js modulo post che non invia alcun dato

var name = req.param('name'); 
console.log(name); 

Il risultato che ottengo è undefined.

Sto usando vele v0.10.5 su Windows 8.1. Sto usando Postgres come database.

+0

Sei sicuro che 'req.param ('nome');' sta restituendo un valore? Inoltre deve essere un valore stringa in modo da poter provare a fare 'name.toString();' – Bram

+0

non restituire un valore. Non viene inviato nulla dal modulo quando viene caricato un allegato di dimensioni superiori a 100 kb. console.log (req.param ('name') restituisce anche undefined – Nakarmi

+0

Stai usando FormData? –

risposta

7

Con skipper, è necessario inserire tutti i file di input alla fine del modulo. Altrimenti potrebbe fuoriuscire.

+0

Sì, è il problema dello skipper. Nella mia forma avevo molti campi di testo e allegati associati. Quindi con skipper non era possibile lavorare normalmente. Così ho usato il caricamento di file jquery per caricare file e il modulo normale di invio per tutti i campi di testo. Tutti i modi grazie per la tua risposta. – Nakarmi

+0

Questo è un brutto. Ho avuto lo stesso problema usando i dati del modulo e ajax. L'aggiunta di tutti i file alla fine ha risolto il problema! Grazie mille per aver risparmiato tempo. –

2

Il metodo req.param viene utilizzato per ottenere i parametri url, i parametri del corpo ei parametri di query. (reference)

se si sta utilizzando multipart/form-data per caricare i file, utilizzare vele skipper per analizzare i dati, si può ottenere semplicemente il file come segue

req.file('name').upload(function (err, uploadedFiles){ 
    if (err) return res.send(500, err); 
    return res.send(200, uploadedFiles); 
}); 
+0

Il fileupload funziona correttamente, non c'è alcun problema. Sto avendo non sono altri elementi del modulo vengono inviati quando ho caricato un'immagine con dimensioni superiori a 100kb. Ma quando carico l'immagine con dimensioni inferiori a 100kb ogni elemento nel modulo viene inviato con l'immagine.Questo è sciocco come sembra ma Sto affrontando questo problema e non ho idea di cosa c'è che non va. – Nakarmi

+0

interessante, potresti fornire un piccolo frammento del tuo modulo?Mi piacerebbe trovare il problema –

+0

Ecco il modulo: '

tipo ' . – Nakarmi

0

Vorrei suggerire controllare l'upload del file ufficiale documentazione da vele ....

http://sailsjs.org/#!/documentation/concepts/File-Uploads

ho seguito la procedura e funziona per me (su vele contro 0,11). Forse ti sei perso qualcosa lungo la strada?

+0

Upload File isn il mio problema Era dovuto al capitano che i miei dati del modulo non venivano inviati. – Nakarmi

1

utilizzare al meglio il plugin per il caricamento del file jQuery blueimp. Ha più funzionalità che può essere d'aiuto.

+0

Ho usato il file blueimp per caricare le immagini. La tua risposta è stata utile. – Nakarmi

3

ha avuto lo stesso problema, risulta che l'ordine della questione ingressi, dice proprio qui sulla pagina github skipper

E 'importante rendersi conto che il beneficio di cui sopra (parametri di testo) si basa su un cruciale, ipotesi semplificativa: gli agenti utente inviano qualsiasi parametro di testo prima del primo parametro del file nel corpo della richiesta HTTP multipart. Ad esempio, in un modulo HTML che significa mettere tutti i tag dopo gli altri input. Se non vuoi mettere il tuo modulo in questo modo, ti consigliamo di usare AJAX per inviarlo invece