Jestem dość nowym użytkownikiem Node.js i używam Express i Busboy-Connect, aby utworzyć prosty formularz przesyłania plików, tylko dla plików wav. Oto, co próbuję zrobić: - rozpocznij przesyłanie - jeśli typem MIME nie jest wav, przekieruj do strony błędu - w przeciwnym razie: napisz plik na serwerze i przekieruj z powrotem.Jak zatrzymać przesyłanie i przekierowanie w busboy, jeśli typ MIME jest nieprawidłowy?
Jeśli typ MIME jest prawidłowy, wszystko działa poprawnie, ale jeśli tak nie jest, nie mogę przekierować, a przeglądarka po prostu zawiesza się i w końcu kończy. Rozumiem, że przeglądarka nie chce przekierowywać, ponieważ czeka na zakończenie przesyłania, ale jak mogę anulować przesyłanie w ramach mojego kodu js? Mogę obejść problem i napisać plik, a następnie go usunąć, jeśli nie jest to odpowiedni typ MIME, ale myślę, że jest to trochę głupie, wolałbym znaleźć sposób na wywołanie zdarzenia, które zatrzyma go i natychmiast przekieruje . Oto (urywek) mojego kodu aplikacji:
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');
});
}
});
});
Czy ktoś może wskazać mi w dobrym kierunku? Dziękujemy za pomoc!
To zadziałało dla mnie, opublikowałem tutaj moje rozwiązanie, jeśli ktoś tego potrzebuje http://stackoverflow.com/questions/30465882/node-busboy-abort-upload/32222839#32222839 – Michael