上传文件但目录不存在

时间:2012-01-18 18:25:21

标签: php upload directory temporary

我是一名新手程序员,他尽力自学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 个答案:

答案 0 :(得分:2)

您需要将其从临时存储移动到您的目录...

if (is_uploaded_file( $_FILES['imgfile']['tmp_name'] )) {
    move_uploaded_file( $_FILES['imgfile']['tmp_name'], '/path/filename.jpg' );
}

答案 1 :(得分:2)

您必须保存图像才能以后访问它。为此,请添加以下代码:

$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 :(得分:0)

尝试使用此方法控制存储文件的位置。 http://us.php.net/manual/en/function.move-uploaded-file.php