Używam busboy, zapisuję mój załadowany plik do bufora i przeprowadzam na nim poprawkę (szerokość, wysokość i rozmiar pliku). Nie mogę do końca życia dowiedzieć się, jak przerwać/zatrzymać strumień, gdy coś znajdzie się nie tak z przesyłaniem.Węzeł Busboy Przerwij przesyłanie
Na przykład, jeśli mam maksymalny rozmiar pliku 500kb, na który chcę zezwolić, śledzę rozmiar bufora podczas jego przesyłania i chcę go przerwać, jeśli jego rozmiar przekracza 500 kB.
Oto uproszczona wersja mojego kodu.
var self = this;
var busboy = new Busboy({
headers: self.req.headers,
limits: {
files: 1
}
});
busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
file.fileRead = [];
var size = 0;
file.on('data', function(chunk) {
size += chunk.length;
/* DO VALIDATION HERE */
if(size > 500000) {
/*** ABORT HERE ***/
}
file.fileRead.push(chunk);
});
file.on('end', function() {
var data = Buffer.concat(file.fileRead, size);
// ... upload to S3
});
self.req.pipe(busboy);
});
Można ograniczyć rozmiar pliku jako parametr do busyboy - to tylko 'nieruchomość fileSize' ... –
Co zrobić, jeśli chcesz sprawdzić poprawność szerokości i wysokości pliku? Musiałbym przerwać strumień, zamiast liczyć na zdarzenie 'limit'. – imns
Mam post o tym miejscu w moich akceptowanych nagrodach, ale nie używa on busbuy. –