【问题标题】:Upload not working上传不起作用
【发布时间】:2011-11-11 20:22:15
【问题描述】:

我有一个表格:

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

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

【问题讨论】:

    标签: php forms upload


    【解决方案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】:

      你改用这个:

      $userfile_name = $_FILES["image"]["tmp_name"];    
      $large_image_location = '../' . $_FILES["image"]["name"];
      

      并将enctype="multipart/form-data" 添加到form 元素

      【讨论】:

        【解决方案3】:

        包括

        enctype="multipart/form-data"
        

        在您的表单标签中。所以它会

        <form method="post" action="includes/tagcreate.php" enctype="multipart/form-data">
        

        【讨论】:

          【解决方案4】:

          你需要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] 来解决这个问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-06-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-06-23
            • 2010-12-27
            • 2017-03-07
            • 2013-02-09
            相关资源
            最近更新 更多