上传无效

时间:2011-09-07 05:13:37

标签: php forms upload

我有一张表格:

<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>";
 }
}

所以数据库查询工作正常但是......没有文件。我之前没有真正处理上传,所以我觉得我可能会遗漏一些相当明显的内容。

4 个答案:

答案 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]来解决此问题。