odpowiedzi na Pytanie 1:
Aby ograniczyć rozmiar żądania HTTP i przesłać rozmiar pliku musimy ustawić limit body-parser
.
app.use(bodyParser.urlencoded({limit: '50mb',extended: true}));
app.use(bodyParser.json({limit: '50mb'}));
bodyParser.urlencoded
Pliki z przednim końcu przychodzi jako urlencoded ciał.
Powoduje wyświetlenie oprogramowania pośredniego, które przetwarza tylko urlencoded bodies. Ten parser akceptuje tylko kodowanie UTF-8 ciała i obsługuje automatyczne nadymanie gzip i deflate kodowania.
Nowy obiekt bryły zawierający przeanalizowane dane jest zapełniany w obiekcie żądania po oprogramowaniu pośredniczącym (tj. Req.body). Obiekt ten będzie zawierał pary klucz-wartość, w których wartością może być ciąg lub tablica (gdy rozszerzony jest fałszem) lub dowolny typ (gdy rozszerzony jest prawdziwy).
bodyParser.json
Zwraca middleware, że tylko analizuje JSON. Ten parser akceptuje kodowanie Unicode ciała i obsługuje automatyczne nadpisywanie gzip i deflate kodowania.
Nowy obiekt bryły zawierający przeanalizowane dane jest zapełniany w obiekcie żądania po oprogramowaniu pośredniczącym (tj. Req.body).
Uwaga: Domyślnie granica wprowadzania do parsera ciała jest 100kb
Odpowiedź na pytanie 2:
Aby zmienić domyślny katalog wysyłania możemy użyć następujących.
app.set('uploadDir', './files'); // Sets the upload Directory to files folder in your project.
Inne Wdrożenie
Choć w tym bodyParser do aplikacji możemy wspomnieć katalog przesyłania.
app.use(express.bodyParser({uploadDir:'./files', keepExtensions: true}));
referencyjny:
Problemy: https://github.com/expressjs/express/issues/1684
Mam nadzieję, że to pomoże!
jeśli ograniczę się do 2 MB, a ja wysyłam żądanie http 1GB. Czy zatrzyma się od razu, jeśli przekroczy 2MB? lub zwraca błąd, ale nadal pobiera pozostałe dane z 0,998 GB? – murvinlai
Źródło jest dostępne na stronie https://github.com/senchalabs/connect/blob/master/lib/middleware/limit.js. Jeśli czytam ją poprawnie, odczytuje ona porowate dane i kończy żądanie, gdy tylko przekroczy limit rozmiaru. –
express.limit jest przestarzały na Nodejs 6 jako middleware – user1709076