Загрузка не работает - PullRequest
       0

Загрузка не работает

0 голосов
/ 07 сентября 2011

У меня есть форма:

<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 ]

1 голос
/ 07 сентября 2011

Вам нужно 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], чтобы решить это.

1 голос
/ 07 сентября 2011

Чтобы загрузить изображение, вы должны использовать 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); 
1 голос
/ 07 сентября 2011

включает

enctype="multipart/form-data"

в теге формы.так будет

<form method="post" action="includes/tagcreate.php" enctype="multipart/form-data">
1 голос
/ 07 сентября 2011

Вы используете это вместо:

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

И добавьте enctype="multipart/form-data" к элементу form

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...