Java / ImageIO Проверить формат перед чтением всего файла? - PullRequest
4 голосов
/ 09 марта 2010

Я разрабатываю веб-приложение, которое позволит пользователям загружать изображения. Меня беспокоит размер файла, особенно если он имеет недопустимый формат.

Мне интересно, есть ли способ в java (или сторонней библиотеке) проверить допустимые форматы файлов (jpg, gif и png) перед чтением всего файла.

Ответы [ 3 ]

3 голосов
/ 09 марта 2010

Если вы хотите поддерживать только несколько типов изображений, вы можете начать с (вверх) загрузки изображения и в какой-то момент использовать первые несколько байтов, чтобы проверить, хотите ли вы продолжить загрузку.

Довольно много форматов изображений можно узнать по первым нескольким байтам, магическое число . Если число совпадает, вы, конечно, не знаете, является ли файл действительным, но его можно использовать для сопоставления с расширением, а магическое число для предотвращения действительно не соответствует вообще.

Взгляните на эту страницу , чтобы проверить некоторые Java, которые проверяют MIME-типы. Прочтите документацию или источник, чтобы проверить, требует ли какой-либо конкретный метод всего файла или может работать с первыми несколькими байтами. Я не использовал эти библиотеки:)

Также ознакомьтесь с этой страницей , на которой также перечислены некоторые библиотеки Java и некоторые документы, на которых основано обнаружение.

Не забудьте оставить отзыв, если вам удалось найти то, что вам нравится!

0 голосов
/ 17 января 2012
function extensionsOkay(fval) {
    var extension = new Array();

    extension[0] = ".png";
    extension[1] = ".gif";
    extension[2] = ".jpg";
    extension[3] = ".jpeg";
    extension[4] = ".bmp";

    // No other customization needed.
    var thisext = fval.substr(fval.lastIndexOf('.')).toLowerCase();
    for(var i = 0; i < extension.length; i++) {
        if(thisext == extension[i]) { 
            $('#support-documents').hide();
            return true; }
    }

    // show client side error message
    $('#span.failed').show();
    return false;
}
0 голосов
/ 09 марта 2010

Вам не нужны сторонние библиотеки. Код, который вы должны написать, прост.

В момент обработки загрузок отфильтруйте файлы по их расширению. Это не идеально, но будет отвечать за большинство случаев.

Однако это будет означать, что файлы уже загружены на сервер. Вы можете использовать немного JavaScript на стороне клиента для выполнения той же операции - проверьте, содержит ли значение компонента загрузки файла допустимый тип файла - .jpg, .png и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...