загрузить файл, но каталог не существует - PullRequest
1 голос
/ 18 января 2012

Я начинающий программист, делающий все возможное, чтобы самостоятельно изучать PHP. Я пытаюсь заставить загрузку файла работать, и у меня есть некоторые проблемы. Файл, кажется, успешно загружен, но его временное местоположение - это местоположение, которое не существует на сервере.

Вот код, который я использую для загрузки файла:

<?php       
if (isset($_POST['submit']))
{
$imgfile = $_FILES['imgfile']['name'];
$temp = $_FILES['imgfile']['tmp_name'];
$type = $_FILES['imgfile']['type'];

if (!empty($imgfile))
{
        $dbc = mysqli_connect('DB_HOST','DB_USER','DB_PASSWORD','DB_NAME')
    or die('Error connecting to database');
    $query = "INSERT INTO photos VALUES(0, '$imgfile',NOW(), '$temp', '$type')";

        mysqli_query($dbc,$query);

        //clear the form                    
    $imgfile = "";

        mysqli_close($dbc);
    }
}
?>
<form enctype = "multipart/form-data" method = "POST" action = "<?php
echo $_SERVER['PHP_SELF']; ?>">

<label for = "imgfile">Filename:</label>
<input type = "file" id = "imgfile" name = "imgfile"  />
<br />
<input type = "submit" value = "upload" name = "submit" id = "submit" /> 
</form>

Вот несколько примеров местоположений, в которых переменная $_FILES['tmp_name'] говорит, что она хранится:

/tmp/phpWw6aut

или

/tmp/php4bzVfE

Временным каталогом по умолчанию, установленным в файле php.ini, является root/tmp. Так что эта часть верна, но есть та странная папка /phpgarbage, которая, предположительно, находится внутри папки tmp, в которой каждый файл говорит, что она находится.

Есть мысли? Дайте мне знать, если есть что-то, о чем я могу быть более конкретным. Это первый пост, связанный с программированием, поэтому дайте мне знать, если я хочу поделиться какой-либо информацией.

Спасибо за ваше время!

Ответы [ 3 ]

2 голосов
/ 18 января 2012

Вы должны сохранить изображение, чтобы иметь доступ к нему позже.Для этого добавьте следующий код:

$path = "uploads/images/";
if (is_uploaded_file($_FILES['imgfile']['tmp_name'])) {
    move_uploaded_file($_FILES["imgfile"]["tmp_name"], $path . $_FILES["imgfile"]["name"]);
}

после следующих строк:

if (!empty($imgfile))
{

Обратите внимание, что $path должен быть доступен для записи.И теперь имя файла становится $path.$_FILES["imgfile"]["name"].Также убедитесь, что реализованы некоторые проверки безопасности, ваш код уязвим.

2 голосов
/ 18 января 2012

Вам нужно переместить его из временного хранилища в ваш каталог ...

if (is_uploaded_file( $_FILES['imgfile']['tmp_name'] )) {
    move_uploaded_file( $_FILES['imgfile']['tmp_name'], '/path/filename.jpg' );
}
0 голосов
/ 18 января 2012

Попробуйте использовать этот метод для контроля, где вы хотите сохранить файл.http://us.php.net/manual/en/function.move-uploaded-file.php

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