【问题标题】:upload file but directory doesn't exist上传文件但目录不存在
【发布时间】:2012-01-18 18:25:21
【问题描述】:

我是一名新手程序员,正在努力自学 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。所以这部分是正确的,但是据说在tmp 文件夹中存在一个奇怪的/phpgarbage 文件夹,每个文件都说它在其中。唯一的问题是,这些文件夹在服务器上不存在。

有什么想法吗?如果有什么我可以更具体的,请告诉我。这是我第一次与编程相关的帖子,所以如果我应该分享更多信息,请告诉我。

感谢您的宝贵时间!

【问题讨论】:

  • 不是文件夹而是文件名,是php随机分配的。
  • 所以 /phpblahblah 是我上传文件的文件名?上传后我还能在临时文件夹中看到这些文件吗?
  • 是的,但它们是非常临时的。

标签: php upload directory temporary


【解决方案1】:

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

$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"]。还要确保实施一些安全检查,您的代码是可攻击的。

【讨论】:

  • 您好,感谢您的快速回复!我有三个后续问题要问你。 1)上传后我应该能够在默认临时文件夹中看到图片吗? 2)一旦我做了移动,我应该能够看到我移动到右边的文件夹中的图片?然后3)当我设置我想要图片移动到的文件夹的路径时,我只需要从php文件正确的目录开始设置它?所以,我的 php 文件当前位于一个名为 html 的文件夹中,我希望它移动到图像中,所以我只需使用 $path = "/Images";.. 对吗?谢谢!
  • 1) 没有。 2) 是的; 3)如果你的php文件在/www/html下,并且path = "images/"(开头没有斜线),你的图片将在/www/html/images下
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-12
      • 1970-01-01
      • 2021-06-25
      • 2019-02-11
      • 2021-10-04
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      相关资源
      最近更新 更多