0

これは私を困惑させます。奇妙な理由で、move_uploaded_file()はファイルをディレクトリに配置しませんが、有効なtmp_nameとnameを返します。したがって、この場合、$fileは常に=からfalseになります。

とにかく、誰かがこのコードに関するいくつかの問題を指摘できますか?よろしくお願いします。

    <?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 に答える