0

这让我很困惑。由于某些奇怪的原因,move_uploaded_file() 不会将文件放入目录中,但它会返回有效的 tmp_name 和名称。所以在这种情况下 $file 总是 = 为假。

无论如何,任何人都可以指出这段代码的一些问题吗?这将不胜感激。

    <?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];

if ($name) {
    $directory = $name;
    $userid = $_SESSION['userid'];
    $type = "logo";

    $file = move_uploaded_file($tmpname, $directory);

    if ($file == true) {    
    mysql_query("INSERT INTO usercontent
    (`userid`, `type`, `url`) VALUES
    ('$userid', '$type', '$directory')");
    echo 'Uploaded';
    echo "<img src='".$directory."'/>";
    } else {
    echo 'There was an error moving the file.';
    }
}


?>
4

2 回答 2

1

你也不检查$_FILES['yourlogo']['error']

这是您使用上传文件检查的内容:

  1. 检查$_FILES['yourlogo']['error']。如果是UPLOAD_ERR_OK(0),则继续。
  2. 检查is_uploaded_file($_FILES['yourlogo']['tmp_name'])。如果失败,PHP 不知道出了什么问题,但它不信任该文件。
  3. 组装目标路径。
  4. 使用move_uploaded_file().

如果move_uploaded_file()出错,则 PHP 无法在目标位置写入文件。这通常是无效路径或没有权限。

请注意,这$_FILES['yourlogo']['name']是文件在上传者 PC 上的名称。它不应该有任何路径信息。

于 2012-04-13T01:29:37.983 回答
0
<?php
include 'realtydevkit.php';
session_start();
$name = $_FILES['yourlogo']['name'];
$tmpname = $_FILES['yourlogo']['tmp_name'];
if ($name) {
    $directory = $name;
    $userid = $_SESSION['userid'];
    $type = "logo";
    $file = move_uploaded_file($tmpname, "path of ur directore/".$directory);
    if ($file == true) {    
    mysql_query("INSERT INTO usercontent
    (`userid`, `type`, `url`) VALUES
    ('$userid', '$type', '$directory')");
    echo 'Uploaded';
    echo "<img src='".$directory."'/>";
    } 
   else 
   {
    echo 'There was an error moving the file.';
    }
}


?>
于 2012-04-13T05:27:28.050 回答