2016-10-17 6 views
0

Может ли кто-нибудь понять, что может быть проблемой здесь с моим кодом? Когда я пытаюсь загрузить файл PDF более чем на 8 МБ, это сообщение появляется:Ошибка при загрузке файла в php

Что-то пошло не так [Файл не загружен] Файл уже на сервере.

Это код, который я напечатал:

<?php 
    $name = $_FILES['file']['name']; 
    $storefile_loc = "uploads/"; 
    $storefile_path = $storefile_loc.basename($name); 

    //$get_ext=explode(".",$_FILES['file']['name']); //separates file name from extension 
    //$ext=end($get_ext); //gets the extension from above explosion 
    $txtFileType = pathinfo($storefile_path,PATHINFO_EXTENSION); 
    $goodext = array("txt","doc","odt","docx"); //array of extensions for app 

    //Check if files are .txt (.doc, and .pdf functionality to be added) 
    if (isset($_POST["submit"])){ //checks if form has been submitted 
     //$check=mime_content_type($name); 
     if (($_FILES['file']['type'] == "text/plain") 
     ||($_FILES['file']['type'] == "application/pdf") 
     ||($_FILES['file']['type'] == "application/vnd.oasis.opendocument.text") 
     ||($_FILES['file']['type'] == "application/msword") 
     ||($_FILES['file']['type'] == "application/vnd.openxmlformats-officedocument.wordprocessingml.document") 
     &&(in_array($txtFileType,$goodext))){ 
      echo "Uploading File..."; 
     } 
     else { 
      echo "You can only upload a txt/doc/docx/pdf/odt file."; 
     } 
    } 
    else { 
     echo "Something went wrong [No file uploaded]"; 
    } 

    //Check if file already exists. Probably won't need this 
    if (file_exists($storefile_path)){ //this instead of $name because it's checking server 
     echo "File already on server."; 
    } 

    //Check file size 
    if ($_FILES['file']['size'] > 2000000){ 
     echo "File is too large."; 
    } 


    //Way to upload permanently. Probably won't need this 
    /* 
    if (move_uploaded_file($_FILES['file']['tmp_name'], $storefile_path)){ 
     echo "The file '".basename($_FILES['file']['name'])."' has been uploaded."; 
    } 
    else { 
     echo "Something went wrong when uploading your file."; 
    } 
    */ 

    ?> 

Я также получаю ошибки уведомления о строках 2 36. Является ли проблема с моим кодом? Или это с Apache?

+0

Сначала проверьте, что 'upload_max_filesize' и 'post_max_size' больше, чем' 8MB' –

+0

Какие ошибки и что такое в этих строках: «Я также получаю уведомления об ошибках в строках 2 и 36. Является ли проблема с моим кодом?» – ArtisticPhoenix

ответ

0

Попробуйте увеличить эти параметры в php.ini, по умолчанию размер (обычно) является 8MB

; Maximum allowed size for uploaded files. 
    upload_max_filesize = 40M; 
    ; Must be greater than or equal to upload_max_filesize 
    post_max_size = 40M; 

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

Это означает, что PHP ограничивает размер загрузки файлов этими двумя настройками. Вам может не понадобиться 40M, но вы должны увеличить его, возможно, примерно на 120% от самого большого файла, который вы хотите загрузить, что даст вам немного передышки.

Это, как правило, первое, что я настраиваю на своих серверах, и обычно я делаю около 80 МБ, что-то более того, и для моих клиентов просто использовать sFTP.

+0

Вот и все! Thnx так много! – Lloydinator

+0

Конечно, рад, что я мог бы вам помочь ... – ArtisticPhoenix

0

Вам нужно оных линии ошибки уведомления

$name = $_FILES['file']['name'];

и

if ($_FILES['file']['size'] > 2000000){ 
    echo "File is too large."; 
} 

в к IsSet ('POST')

if (isset($_POST["submit"])){ 
    $name = $_FILES['file']['name']; 
    ... 
    if ($_FILES['file']['size'] > 2000000){ 
    echo "File is too large."; 
    } 
}