2012-03-03 2 views
3

У меня есть php-файл, который загружает изображения, такие как jpegs и png, в папку с именем uploads, которая хранится на сервере apache и в том же месте, что и файл php.PHP не может загружать файлы на сервер?

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

Было бы очень признательно, если бы кто-то с большим опытом, чем я, мог посмотреть на мой код и сказать, почему он ведет себя таким образом.

Вот HTML форма:

<!-- 
To change this template, choose Tools | Templates 
and open the template in the editor. 
--> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Upload Your File</title> 
</head> 
<body> 
    <?php 
    // put your code here 
    ?> 

    <form enctype="multipart/form-data" method="post" action="fileHandler.php"> 
     Select File: 
     <input name="uploaded_file" type="file"/><br/> 
     <input type="submit" value="Upload"/> 
    </form> 
</body> 
</html> 

и вот файл PHP, который выполняется, когда форма была отправлена:

<?php 

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
* PHP file that uploads files and handles any errors that may occur 
* when the file is being uploaded. Then places that file into the 
* "uploads" directory. File cannot work is no "uploads" directory is created in the 
* same directory as the function. 
*/ 

$fileName = $_FILES["uploaded_file"]["name"];//the files name takes from the HTML form 
$fileTmpLoc = $_FILES["uploaded_file"]["tmp_name"];//file in the PHP tmp folder 
$fileType = $_FILES["uploaded_file"]["type"];//the type of file 
$fileSize = $_FILES["uploaded_file"]["size"];//file size in bytes 
$fileErrorMsg = $FILES["uploaded_file"]["error"];//0 for false and 1 for true 
$target_path = "uploads/" . basename($_FILES["uploaded_file"]["name"]); 

echo "file name: $fileName </br> temp file location: $fileTmpLoc<br/> file type: $fileType<br/> file size: $fileSize<br/> file upload target: $target_path<br/> file error msg: $fileErrorMsg<br/>"; 

//START PHP Image Upload Error Handling--------------------------------------------------------------------------------------------------- 

    if(!$fileTmpLoc)//no file was chosen ie file = null 
    { 
     echo "ERROR: Please select a file before clicking submit button."; 
     exit(); 
    } 
    else 
     if(!$fileSize > 16777215)//if file is > 16MB (Max size of MEDIUMBLOB) 
     { 
      echo "ERROR: Your file was larger than 16 Megabytes"; 

      unlink($fileTmpLoc);//remove the uploaded file from the PHP folder 
      exit(); 
     } 
     else 
      if(!preg_match("/\.(gif|jpg|jpeg|png)$/i", $fileName))//this codition allows only the type of files listed to be uploaded 
      { 
       echo "ERROR: Your image was not .gif, .jpg, .jpeg or .png"; 
       unlink($fileTmpLoc);//remove the uploaded file from the PHP temp folder 
       exit(); 
      } 
      else 
       if($fileErrorMsg == 1)//if file uploaded error key = 1 ie is true 
       { 
        echo "ERROR: An error occured while processing the file. Please try again."; 
        exit(); 
       } 


    //END PHP Image Upload Error Handling--------------------------------------------------------------------------------------------------------------------- 


    //Place it into your "uploads" folder using the move_uploaded_file() function 
    $moveResult = move_uploaded_file($fileTmpLoc, $target_path); 

    //Check to make sure the result is true before continuing 
    if($moveResult != true) 
    { 
     echo "ERROR: File not uploaded. Please Try again."; 
     unlink($fileTmpLoc);//remove the uploaded file from the PHP temp folder 

    } 
    else 
    { 
     //Display to the page so you see what is happening 
     echo "The file named <strong>$fileName</strong> uploaded successfully.<br/><br/>"; 
     echo "It is <strong>$fileSize</strong> bytes.<br/><br/>"; 
     echo "It is a <strong>$fileType</strong> type of file.<br/><br/>"; 
     echo "The Error Message output for this upload is: $fileErrorMsg"; 
    } 
?> 

ответ

3

убедитесь, что структура каталогов имеет разрешения на запись. Вы можете проверить внутри php, используя is_writeable. Проверяя из PHP, вы также убедитесь, что у пользователя PHP есть доступ на запись.

+0

Спасибо, что проблема заключалась в том, что права доступа к файлу не были записаны после их изменения, теперь он отлично работает. –

2

Проверьте права доступа к папке на сервере. Если это неверно, вы можете изменить файл php.ini.

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