我有一张表格:
<form method="post" action="includes/tagcreate.php">
<input type="file" name="image" />
<input class="btn btn-orange" name="submit" type="submit" value="Create" />
</form>
并且tagcreate.php:
require('connection.php');
if (isset($_POST["submit"])) {
$image = $_POST['image'];
$userfile_name = $_FILES["image"]["name"];
$large_image_location = '../';
$query = "INSERT INTO tags (image) VALUES ('{$image}')";
if (isset($_FILES["image"]["name"])){
move_uploaded_file($userfile_name, $large_image_location);
chmod ($large_image_location, 0777);
}
if (mysql_query($query, $connection)) {
header("location: ../");
exit;
} else {
echo "<p>Failed to add:</p>";
echo "<p>" . mysql_error() . "</p>";
}
}
所以数据库查询工作正常但是......没有文件。我之前没有真正处理上传,所以我觉得我可能会遗漏一些相当明显的内容。
答案 0 :(得分:1)
你改用它:
$userfile_name = $_FILES["image"]["tmp_name"];
$large_image_location = '../' . $_FILES["image"]["name"];
并将enctype="multipart/form-data"
添加到form
元素
答案 1 :(得分:1)
要上传图片,您必须在表格中使用enctype =“multipart / form-data”,即
<form method="post" action="includes/tagcreate.php" enctype="multipart/form-data">
同时修改,
move_uploaded_file($_FILES["image"]["tmp_name"], $large_image_location);
答案 2 :(得分:1)
包括
enctype="multipart/form-data"
在您的表单标记中。所以它会
<form method="post" action="includes/tagcreate.php" enctype="multipart/form-data">
答案 3 :(得分:1)
您需要enctype="multipart/form-data"
:
<form method="post" action="includes/tagcreate.php" enctype="multipart/form-data">
然后你应该改变这一行:
$userfile_name = $_FILES["image"]["name"];
要:
$userfile_name = $_FILES["image"]["tmp_name"];
由于文件存储在“tmp_name”中的位置,而不是“name”给出的位置。
PS。如果两个用户上传两个具有相同文件名的不同文件,则第二个用户将覆盖第一个用户的文件,因为它们具有相同的名称。您可以使用[tempnam()][1]
来解决此问题。