2015-10-14 14 views
1

У меня возникла проблема при загрузке файлов с PHP с ограничением по размеру. Я установил максимальный размер для загрузки: 5 МБ, но когда я загружаю файл более 5 МБ, ему все же предоставляется продолжение процесса, но файл не загружается, как я могу решить проблему, поэтому будет некоторая ошибка, если кто-то загрузит больше чем 5 МБ. Вот мой код:Загрузка файла с помощью PHP: ограничение размера

Форма ввода:

<form action="kegiatan_upload_tambah.php" method="post" enctype="multipart/form-data"> 
    <div class="box-body"> 
     <div class="form-group"><label>ID Kegiatan</label> 
     <input type="text" name="id_kgt" class="form-control"> 
     </div> 
     <div class="form-group"><label>Nama Kegiatan</label> 
     <input type="text" name="nama_kgt" class="form-control"> 
     </div> 
     <div class="form-group"><label>Keterangan</label> 
     <textarea name="ket" class="form-control"></textarea> 
     </div> 
     <div class="row"> 
     <div class="col-xs-5"><label>Tanggal Mulai</label> 
      <input type="text" name="tg_mulai" id="tg_mulai" class="form-control" > 
     </div> 
     <div class="col-xs-5"><label>Tanggal Akhir</label> 
      <input type="text" name="tg_akhir" id="tg_akhir" class="form-control" > 
     </div> 
     </div> 
     <br/> 
     <div class="form-group"><label>Pilih File</label> 
     <input type="file" name="file" required> 
     </div> 
    </div></form> 

PHP скрипт:

$allowed_ext = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip'); 
    $file_name = $_FILES['file']['name']; // File adalah nama_kgt dari tombol input pada form 
    $file_ext  = strtolower(end(explode('.', $file_name))); 
    $file_size = $_FILES['file']['size']; 
    $file_tmp  = $_FILES['file']['tmp_name']; 

    $lokasi  = 'file/kegiatan/'.$nama_kgt.'-'.$file_name; 

    if(in_array($file_ext, $allowed_ext) === true) 
    { 
     if($file_size > 5000000) 
     { 
     echo "<script>alert('ERROR: Max File only 5 Mb!');history.go(-1)</script>"; 
     } 
     else 
     { 
     move_uploaded_file($file_tmp, $lokasi); 

     $sql = "INSERT INTO kegiatan (id_kgt,nama_kgt,ket,tg_mulai,tg_akhir,nm_pengirim,type,size,file,jamlog,buatlog) 
     VALUES('$id_kgt','$nama_kgt','$ket','$tg_mulai','$tg_akhir','{$_SESSION['nama']}','$file_ext','$file_size','$lokasi',now(),now())"; 

Любая помощь будет так высоко ценится.

+0

Ну, что значение находится внутри ** $ file_size **? – Naruto

+0

Можете ли вы показать мне тег '', а также распечатать' $ file_name', '$ file_ext',' $ file_size' и '$ file_tmp', потому что я думаю, что файл фактически не загружен. – AkiEru

+0

@AkiEru Я обновил форму ввода sir –

ответ

1

Попробуйте это:

$file_exts = array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'pdf', 'rar', 'zip'); 
    $upload_exts = end(explode(".", $_FILES["file"]["name"])); 
       if ((($_FILES["file"]["type"] == "file/doc") 
       || ($_FILES["file"]["type"] == "file/docx") 
       || ($_FILES["file"]["type"] == "file/xls") 
       || ($_FILES["file"]["type"] == "file/xlsx")) 
       || ($_FILES["file"]["type"] == "file/ppt")) 
        || ($_FILES["file"]["type"] == "file/pptx")) 
         || ($_FILES["file"]["type"] == "file/pdf")) 
          || ($_FILES["file"]["type"] == "file/rar")) 
          || ($_FILES["file"]["type"] == "file/zip")) 

       && ($_FILES["file"]["size"] < 5000000) 
       && in_array($upload_exts, $file_exts)) 
         { 
          if ($_FILES["file"]["error"] > 0) 
          { 
           header("Location:index.php?err=filepro1"); 
           //echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
          } 
          else 
          { 
           $tempupname = time().$_FILES["file"]["name"]; 
           $imgpathtostore="files/".$tempupname; 
           $imgpathtostoreDB="files/".$tempupname; 
           //Query 

           } 

           } 
           else 
           { 
            echo "file err"; 
           } 
+0

все еще не работает sir –

+0

@AzmiColeJr. попробуйте мой отредактировал код, я бы хотел, чтобы это вам помогло. –

0

Попробуйте обратить вспять логику ...

Вместо того чтобы сказать

if($file_size > 5000000) 
{ 
    //do something... 
} 
else 
    die("File cannot exceed 5MB in size"); 

сказать ....

if($file_size <= 5000000) 
{ 
    //do something.... 
} 
else 
    die("File cannot exceed 5MB in size"); 

Кроме того, убедитесь, что ваши теги формы имеют атрибуты method = "POST" enctype = "multipart/form-data". Вы также можете проверить, нет ли ошибок в файле перед его загрузкой. Для того, чтобы сделать это ...

$file_error = $_FILES['file']['error']; 
if($file_error === 0) 
{ 
    //upload file and do more cool things here.... 
} 

Надеется, что это помогает ...

+0

все еще не работает –

Смежные вопросы