когда проверять размер файла / mimetype в скрипте загрузки node.js?

Я создал сценарий загрузки в node.js, используя express / formidable. В основном это работает, но мне интересно, где и когда проверять загруженный файл e. г. для максимального размера файла или если действительно разрешен mimetype файла.

Моя программа выглядит так:

app.post('/', function(req, res, next) {
    req.form.on('progress', function(bytesReceived, bytesExpected) {
        // ... do stuff
    });

    req.form.complete(function(err, fields, files) {
        console.log('\nuploaded %s to %s',  files.image.filename, files.image.path);
        // ... do stuff    
    });
});

Мне кажется, что единственное жизнеспособное место для проверки mimetype / размера файла - это событие complete , где я могу надежно использовать функции файловой системы, чтобы получить размер загруженного файла в / tmp / - но это кажется не очень хорошей идеей, потому что:

  • возможно вредоносный / слишком большой файл уже загружен на мой сервер
  • неудовлетворительное взаимодействие с пользователем - вы наблюдаете за процессом загрузки, чтобы вам сказали, что это не сработало после этого

Как лучше всего реализовать это? Я нашел довольно много примеров загрузки файлов в node.js, но, похоже, ни один из них не выполнял необходимые проверки безопасности.

5
задан Max 12 June 2011 в 12:56
поделиться