2016-05-09 2 views
0

Я делаю проверку загрузки файлов на php. Я хочу подтвердить файлОшибка размера файла в php

if > 3MB: display error.

else: proceed to upload

то, что я делаю сейчас, если размер файла больше или меньше, чем 3 МБ, при этом отображается сообщение об ошибке. ниже приведены коды:

/* 
* other validation of post here 
* 
*/ 
if (isset($_FILES['uploaded'])) { 
    $filesize = $_FILES['uploaded']['size']; 
    if ($filesize > 3145728) { 
     $msgError[] = 'File can not be more than 3MB'; 
    } 
    for ($i=0; $i < count($_FILES['uploaded']['name']); $i++) { 
     $tmpFilePath = $_FILES['uploaded']['tmp_name'][$i]; 
     if (!empty($tmpFilePath)) { 
      $shortname = $_FILES['uploaded']['name'][$i]; 
      $filePath = "uploads/" . date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][$i]; 
      if (!$msgError && move_uploaded_file($tmpFilePath, $filePath)) { 
       $sql = " UPDATE purchase SET quotation_1='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][0]."', quotation_2='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][1]."', quotation_3='".date('d-m-Y-H-i-s').'-'.$_FILES['uploaded']['name'][2]."' 
       WHERE pr_id='$pr_id' "; 
       $result = mysqli_query($conn, $sql); 
       if(mysqli_query($conn, $sql)){ 
        mysqli_close($conn); 
        $pr_idEnc = urlencode(encryptor('encrypt', $pr_id)); 
        header("Location: ".BASE_PATH."update-purchase.php?success&pr_id=".$pr_idEnc.""); 
       } else { 
        mysqli_close($conn); 
        echo "Error updating record: " . mysqli_error($conn); 
       } 
      } else { 
       $msgErrorString = implode(",",$msgError); 
       $pr_idEnc = urlencode(encryptor('encrypt', $pr_id)); 
       mysqli_close($conn); 
       header("Location: ".BASE_PATH."update-purchase.php?pr_id=".$pr_idEnc."&msgError=".$msgErrorString.""); 
      } 
     } 
    } 
} 

Как это решить?

+1

вы должны убить страницу здесь 'if ($ filesize> 3145728) { $ msgError [] = 'Файл не может быть больше 3 МБ; } ' – MartinLoanel

+0

Вы имеете в виду, что мне нужно изменить на' die ('File не может быть больше 3MB'); ' – Amran

+1

i означает вызов exit; или умереть после '$ msgError [] = 'Файл не может быть больше 3 МБ; exit; ' – MartinLoanel

ответ

1

Почему бы не изменить настройки upload_max_filesize и upload_max_filesize в файле php.ini?

upload_max_filesize = 3 M 
post_max_size = 3 M 

post_max_size

Устанавливает максимальный размер почтовых данных допускается. Этот параметр также влияет на загрузку файлов. Чтобы загрузить большие файлы, это значение должно быть больше upload_max_filesize. Вообще говоря, memory_limit должен быть больше чем post_max_size. Когда используется целое число, значение измеряется в байтах.

upload_max_filesize

Максимальный размер загружаемого файла. Когда используется целое число, значение измеряется в байтах.

+0

Не должно быть' = ', а не' -'? Кроме того, по умолчанию 'upload_max_filesize' составляет 2 МБ, поэтому ваш ответ несколько важен, но' post_max_size' по умолчанию IS 8MB и не должен быть настроен ниже. –

+0

@LFlare fixed;) – Lacobus

+0

Спасибо @lacobus, удалось сделать это после того, как я изменил код выше. Это нормально, если изменить 'post_max_size' в будущем использовании? – Amran