2017-01-13 12 views
1

Я использую PHP 7.0.9 с IIS 8. У меня есть html-форма для загрузки изображения. Метод POST, действие верное, а enctype - «multipart/form-data». Тем не менее, когда я отправить форму, страница зависает, как будто она пытается загрузить выбранный файл бесконечно - его вес около 30KB, а не большой сделки ...Форма Php 7 не работает с enctype = "multipart/form-data" и method = "post"

Вот моя форма:

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="text" name="textInput" id="textInput"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

а вот upload.php:

<?php 

echo "ok<br/>"; 
var_dump($_POST); 

?> 

Как есть, когда я нажимаю на «Загрузить изображение», страница висит, как если бы он был загрузки файла бесконечно.

Но если я удалить enctype или изменить действие по get, форма занесена и печатает:

ok 
array(0) { } 

$_POST массив, очевидно, пусто, но почему это не работает с enctype="multipart/form-data"?

FYI:

file_uploads = On 
upload_max_filesize = 20M 
max_file_uploads = 20 
upload_tmp_dir = C:\Windows\temp 

... и C: \ Windows \ Temp является записываемый для всех. Да, группа Everyone - меня это очень раздражает, и я не хочу никаких проблем.

Некоторые тесты позже ...

Если я использую:

<form action="upload.php" method="get" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="text" name="textInput" id="textInput"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

Результат:

ok 
array(3) { ["fileToUpload"]=> string(13) "imageName.png" ["textInput"]=> string(4) "blah" ["submit"]=> string(12) "Upload Image" } 

Казалось бы, проблема между методом и ENCTYPE ,

EDIT

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

2017-01-16 13:28:19 X.X.X.X GET /testupload.html - 80 - X.X.X.X Mozilla/5.0+(Windows+NT+6.2;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/55.0.2883.87+Safari/537.36 - 304 0 0 1140 

Но ничего не написано когда я отправлю форму; поэтому я даже не знаю, получает ли IIS запрос.

+0

Вы пробовали использовать другой браузер? Работает ли он с текстом типа ввода, только если вы опустите файл типа ввода? – Blackbam

+0

Я не могу воспроизвести его с той же версией php, но с Apache вместо IIS. – Blaatpraat

+0

@Blackbam Я попробовал его с Chrome 55 и Internet Explorer 10. – gobes

ответ

0

Наконец, преступник был Glimpse. Я абсолютно не знаю почему, но как только я удалил все следы плагина в web.config, загрузка через PHP снова работала.

-1

«Я не могу повторить его с той же версией PHP, но с Apache вместо IIS»

Посмотрите на брандмауэре IIS.

+1

Если вы хотите ответить на комментарий, отправьте сообщение. Кроме того, в IIS нет встроенного брандмауэра. – gobes

+0

@ArthurSPITZNAGEL - Если у вас недостаточно репутации для комментариев, просто не комментируйте и не двигайтесь дальше. Не оставляйте комментарии в качестве ответа. – Quentin

-1

использование $ _FILES (для файлов) вместо $ _POST

+1

$ _POST не должно быть пустым, так как он сказал, что пытался – Blackbam