Как я могу ограничить размер файла, когда я пытаюсь загрузить файлы через PHP parse SDK?

1

Я пытаюсь загрузить файлы в облако разбора SDK, и технически это работает, но теперь я хочу ограничить максимальный размер файла, который пользователь сможет загрузить. Это код:

if ( isset( $_FILES['image'] ) ) {

    // save file to Parse
    $file = ParseFile::createFromData( file_get_contents( $_FILES['image']['tmp_name'] ), $_FILES['image']['name']  );
    $file->save();
}
Теги:
file
parse.com
upload

4 ответа

0
Лучший ответ

Если вы посмотрите на массив $_FILES вы увидите, что есть кусок данных, переданных с каждым вызванным $_FILES['image']['size']

Если вы хотите ограничить размер на конце PHP, просто проверьте это поле

if ( isset( $_FILES['image'] ) ) {
    if ( $_FILES['image']['size'] < 10000 ) {
        // save file to Parse
        $file = ParseFile::createFromData( 
                   file_get_contents( $_FILES['image']['tmp_name'] ), 
                   $_FILES['image']['name']  );
        $file->save();
     } else {
         // return some sort of error
     }
}

Просто помните, что $_FILES['image']['size'] записывается в BYTES.

2

Просто используйте оператор if и получите размер файла

$_FILES['image']['size']
//The size, in bytes, of the uploaded file.

что-то вроде

if($_FILES['image']['size'] < 10000000)
{
    // save file to Parse
    $file = ParseFile::createFromData( file_get_contents( $_FILES['image' ['tmp_name'] ), $_FILES['image']['name']  );
    $file->save();
}
else
{
    //Tell user that the file is too big, however you prefer
}

Материал на стороне клиента: прямо из документации PHP:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

URL-адрес в приведенном выше примере должен быть заменен и указывать на файл PHP.

Скрытое поле MAX_FILE_SIZE (измеренное в байтах) должно предшествовать поле ввода файла, а его значение - максимальный размер файла, принятый PHP. Этот элемент формы всегда должен использоваться, поскольку он избавляет пользователей от необходимости ждать передачи большого файла только для того, чтобы обнаружить, что он слишком велик, и передача не удалась. Имейте в виду: обмануть этот параметр на стороне браузера довольно просто, поэтому никогда не полагайтесь на файлы с большим размером, которые блокируются этой функцией. Это просто удобная функция для пользователей на клиентской стороне приложения. Однако настройки PHP (на стороне сервера) для максимального размера не могут быть обмануты.

  • 0
    Спасибо, это очень полезно
0

Вы можете ограничить размер файла, прежде чем разбирать файл. Смотри ниже:

    if ( isset( $_FILES['image'] ) ) {
        $maxsize    = 2097152; // 2MB 

        if(($_FILES['image']['size'] >= $maxsize) || ($_FILES["image"]["size"] == 0)) {
            $message = 'File too large. File must be less than 2 megabytes.'; 
            echo '<script type="text/javascript">alert("'.$message.'");</script>'; 
        }

        // save file to Parse
        $file = ParseFile::createFromData( file_get_contents( $_FILES['image']['tmp_name'] ), $_FILES['image']['name']  );
        $file->save();
    }
0

попробуйте этот путь,

if(isset($_FILES['image']) {
if($_FILES['image']['size'] > 10485760) { //10 MB (size is also in bytes)
    // File too big
} else {
     $file = ParseFile::createFromData( 
               file_get_contents( $_FILES['image']['tmp_name'] ), 
               $_FILES['image']['name']  );
     $file->save();
}
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню