Sono abbastanza nuovo su Node.js e sto utilizzando Express e Busboy-Connect per creare un semplice modulo di caricamento file, solo per i file wav. Ecco cosa sto cercando di fare: - avvia il caricamento - se il mimetype non è wav, reindirizza a una pagina di errore - else: scrivi il file sul server e reindirizza indietro.Come interrompere il caricamento e il reindirizzamento in busboy se il tipo mime non è valido?
Se il mimetype è valido, tutto funziona correttamente, ma se non lo è non posso reindirizzare e il browser è semplicemente sospeso e alla fine scade. La mia comprensione è che il browser non vuole reindirizzare perché è in attesa del completamento del caricamento, ma come posso annullare il caricamento nel mio codice js? Potrei risolvere il problema e scrivere il file, quindi cancellarlo se non è il giusto mimetype, ma penso che sia un po 'stupido farlo, preferirei trovare un modo per attivare un evento che lo fermi e reindirizzare immediatamente . Ecco (un frammento di) mio codice app:
app.get('/', function (req, res) {
res.render(__dirname + '/public/index.ejs', {error: 0});
});
app.get('/error', function (req, res) {
res.render(__dirname + '/public/index.ejs', {error: 1});
});
app.post('/upload', function (req, res) {
var timestamp = new Date().getTime().toString();
//console.log(timestamp);
var fstream;
req.pipe(req.busboy);
req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
if ("audio/wav" != mimetype)
{
console.log("invalid mimetype"); // that prints ok
// req.busboy.end(); // I tried that but it doesn't work
res.redirect('/error');
}
else
{
console.log("Uploading: " + mimetype);
fstream = fs.createWriteStream(__dirname + '/tmp/' + timestamp + filename);
file.pipe(fstream);
fstream.on('close', function() {
res.redirect('back');
});
}
});
});
Qualcuno mi può puntare nella giusta direzione? Grazie per il vostro aiuto!
Ha funzionato per me, ho postato la mia soluzione qui se qualcuno ne ha bisogno http://stackoverflow.com/questions/30465882/node-busboy-abort-upload/32222839#32222839 – Michael