2013-11-18 3 views
1

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

Я собрал код ниже, чтобы добиться изображения загрузки на мой сайт:

<html> 
<body> 

<form action="insert.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"> 
</form> 

</body> 
</html> 

и insert.php является:

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("/httpdocs/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "/httpdocs/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "/httpdocs/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 

Ну, сообщения успеха отображаются корректно. Однако файл не загружается в указанную папку.

Любые мысли?

+1

Проверьте, если move_uploaded_file() возвращает TRUE. У вас, вероятно, нет прав на запись или что-то еще. – cen

+3

'move_uploaded_file' возвращает true или false в зависимости от успеха или нет. Вы должны проверять его при использовании. –

+2

И убедитесь, что вы включили отчет об ошибках. Если он терпит неудачу, он должен показать причину. – Barmar

ответ

1

Выполнить скрипт из корневой директории создайте папку с именем uploads затем изменить все экземпляры /httpdocs/ к uploads/ (как я ниже) без открытия / и он должен (теоретически) работы, как это было для меня.

Следует обратить внимание на то, что этот < 20000 увеличивается, если ваш файл составляет менее 20 000 байт. Если файл, который вы пытаетесь использовать для загрузки выше, чем это число, то скрипт выдаст ошибку Invalid file

Убедитесь, что папка для записи, например: 0755 или 0777 (в моем случае это 0755)

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

Плюс как Nikolay states in his answer, вы также можете проверить это.

<?php 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000) // <= you may have to increase this value 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 

    if (file_exists("uploads/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "uploads/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "uploads/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 
+0

собираюсь попробовать ... –

+0

как-то это сработало! возможно, у меня были неправильные папки для передачи файлов, во всяком случае, спасибо большое! –

+0

Вы очень приветствуете @PanosVakalopoulos относительные пути работают лучше. ;-) –

0

Если все с пути к папкам правильно, вы должны проверить предел загрузки файла, например, в файле .htaccess:

php_value upload_max_filesize 10M 
php_value post_max_size 10M 

или pnp.ini:

upload_max_filesize = 10M 
post_max_size = 10M 

По умолчанию предел 2048 КБ.

0

Определить корневую папку $_SERVER["DOCUMENT_ROOT"], чтобы увидеть, если PHP может получить доступ к папке или добавляет файл в нужную папку в противном случае все выглядит довольно хорошо.

0

Ваш адрес указан неверно!

использовать адрес как c:/wamp/www/site/httpdocs/неhttp://site/httpdocs/

если на Linux проверка письменного разрешения для папки.

+0

Я не строю сайт локально, но онлайн с самого начала ... –

0

это было 100% и тестирование кода addimage1 это имя типа файлов ввода postimages представляет собой папку и подал перемещены в папку postimages успешно

move_uploaded_file ($ _ FILES [ "addimage1"] [ "tmp_name"] , "Постимажи /".$ _FILES [ "addimage1"] [ "имя"]);

+1

Не могли бы вы добавить немного больше подробностей о решении, которое вы предоставляете? – abarisone

+0

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