2012-01-06 2 views
2

У меня есть следующий вид:PHP File Upload/move_uploaded_file не работает

<html> 
<body> 

<form action="upload_file.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> 

И следующий сценарий:

<?php 
error_reporting(E_ALL); 

if (($_FILES["file"]["size"] < 20000)) 
    { 
    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 />"; 


    $moved = move_uploaded_file($_FILES["file"]["tmp_name"], "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"]); 

    if ($moved) { 
     echo "Move: Success"; 
    } 
    else { 
     echo "Move Failed"; 
    } 


     echo "Stored in: " . "C:/inetpub/wwwroot/PHP_Ramp/upload/" . $_FILES["file"]["name"]; 
     } 
    } 

else 
    { 
    echo "Invalid file"; 
    } 
?> 

По какой-то причине я постоянно получаю "Move Failed". Любая идея, почему файл не перемещается?

======== ТАК думает, что мне нужно объяснить это больше; поэтому я печатаю здесь предложение. ========

+0

включите, пока вы все еще печатаете, полную ошибку php, которую видите. Это очень поможет. Так или иначе; проверьте, выключен ли безопасный режим php (его включение и попытка переместить загруженные файлы, вероятно, самая распространенная ошибка ...) – giorgio

+0

Спасибо за ответ giorgio. Я использую notepad ++ - как бы я посмотрел полную ошибку php? Я на IIS7. Кроме того, я подтвердил, что безопасный режим отключен в php.ini. – SB2055

ответ

6

Проверьте, есть ли у вас разрешения в этой папке (C:/inetpub/wwwroot/PHP_Ramp/upload/) для записи файла. Вы можете проверить папку, щелкнув правой кнопкой мыши и выбрав properties -> Security

+0

Я приложил следующее к началу моего кода: mkdir ("C:/inetpub/wwwroot/PHP_Ramp/upload /", 0766); , и я все еще получаю «переход не удался». – SB2055

+0

Он означает, что сама папка записывается сценарием PHP. Добавление 0766 - это просто изменение разрешения перемещенного файла после его написания. – anjunatl

+1

Аргумент 'mode' игнорируется в Windows по http://us.php.net/manual/en/function.mkdir.php. Я думаю, что @Shyju означает разрешения NTFS, так как @Mik сказал, что он использует IIS7. – Crontab

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