我很难让文件上传在php中运行。
预期:有关上传文件的信息。 得到:空$ _FILES
这是我的表单/脚本。我究竟做错了什么?
<!DOCTYPE html>
<html lang="en">
<body>
<?php
if($_SERVER['REQUEST_METHOD'] !== "POST"): ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<label for="file">Upload a file:</label>
<input type="file" name="file" id="file"><br/>
<button type="submit">Analyze</button>
</form>
<?php endif; ?>
<?php if($_SERVER['REQUEST_METHOD'] == "POST"):
print_r($_FILES); // debugging
if ($_FILES["file"]["size"] < 20000)
{
if ($_FILES["file"]["error"] > 0)
{
echo "<p>Error: " . $_FILES["file"]["error"] . "</p>";
}
else
{
echo "<p>Upload: " . $_FILES["file"]["name"] . "</p>";
echo "<p>Type: " . $_FILES["file"]["type"] . "</p>";
echo "<p>Size: " . ($_FILES["file"]["size"] / 1024) . " kB</p>";
echo "<p>Stored in: " . $_FILES["file"]["tmp_name"] . "</p>";
}
}
else
{
echo "Invalid file. Please make sure your file is a plain text file and is small enough for this program to analyze.";
}
endif; ?>
</body>
</html>
答案 0 :(得分:8)
您忘记了<form>
标记中的编码类型属性:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
enctype="multipart/form-data">
答案 1 :(得分:4)
默认情况下,表单数据使用application/x-www-form-urlencoded
编码提交(这与GET请求的查询字符串中使用的格式相同),不支持文件数据。
如果条目的类型是“file”,则仅将其值替换为文件名。
您需要使用multipart/form-data
编码。您可以使用enctype
attribute
<form ... enctype="multipart/form-data">
答案 2 :(得分:3)
您需要提供enctype="multipart/form-data"
。以这种方式更新:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
enctype="multipart/form-data">