Php 7表格不适用于enctype =" multipart / form-data"和方法=" post"

时间:2017-01-13 13:52:10

标签: php html file-upload iis-8

我在IIS 8中使用PHP 7.0.9。我有一个html表单来上传图像。该方法为POST,操作正确,enctype为" multipart / form-data"。但是,当我提交表单时,页面会挂起,就像它试图无休止地上传所选文件一样 - 它重约30kb,不是什么大不了的......

这是我的表格:

<!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);

?>

按原样,当我点击&#34;上传图片&#34;时,该页面就像是无休止地上传文件一样挂起。

但是,如果我删除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对每个人都可写。是的,小组每个人 - 我真的很生气,我不想要任何权利问题。

稍后进行一些测试......

如果我使用:

<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之间的问题。

修改

对于它的价值,我认为它肯定是一个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是否收到了请求。

3 个答案:

答案 0 :(得分:0)

最后,罪魁祸首是Glimpse。我绝对不知道为什么,但是一旦我删除了web.config中插件的每一个痕迹,通过PHP上传再次工作。

答案 1 :(得分:-1)

“我无法使用相同的php版本复制它,但使用Apache代替IIS”

查看您的IIS防火墙。

答案 2 :(得分:-1)

使用$ _FILES(用于文件)而不是$ _POST