【发布时间】:2013-04-05 21:22:54
【问题描述】:
我的html表单:
<form action='' method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file">
<input type="submit" name="submit" value="Submit">
</form>
我的 php 文件:
if ($_POST['submit'] == "Submit") {
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("/downloads/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"/downloads/" . $_FILES["file"]["name"]);
echo "Stored in: " . "/downloads/" . $_FILES["file"]["name"];
}
}
我的 public_html 中有 2 个文件夹:tmp 和 downloads,都是 777 权限(只是为了测试)
此文件位于下载中的 .htaccess 保护文件夹中 (public_html/downloads/new/update.php) 我希望将 zip 文件上传到下载目录中。
此代码不会给我任何错误,但不会上传文件。为什么?
【问题讨论】:
-
可怕的代码。您假设上传成功。您在文件系统操作中直接使用用户提供的文件名(恶意用户现在可以在您的服务器上随意乱写),并且您只需假设移动操作成功。
-
问题是 '"/downloads/" 。 $_FILES["file"]["name"]' 已作为答案发布
-
不要担心安全性,因为这个文件在一个只有我可以访问的受保护目录中......
标签: php html upload download zip