0

画像がアップロードされていないのに「unlink()」メソッドが実行されるのはなぜですか?どうすれば修正できますか?

If (isset($_FILES["image"]["name"])) {
    move_uploaded_file($_FILES["imageUp"]["tmp_name"],
        "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
    //if (file_exists($delete)) {
        unlink($delete);
    }
    else {
    $img = $data['row']->image_name;
    }
//}
4

3 に答える 3

0
isset($_FILES["image"]["name"] 

ファイルをアップロードするかどうかにかかわらず、常に設定されます。isset設定されているかどうかをチェックします。だから、それは常になりますtrue

したがって、コードを変更する必要があります:

if (isset($_FILES["image"]["name"]) && !empty($_FILES["image"]["name"])) {
move_uploaded_file($_FILES["imageUp"]["tmp_name"],
    "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
//if (file_exists($delete)) {
    unlink($delete);
} else {
    $img = $data['row']->image_name;
}

これで試してみてください。お役に立てれば :)

于 2013-02-16T16:23:53.667 に答える
0

PHP のドキュメントによると、move_uploaded_fileTRUEは、すべてが正常FALSEに行われ、問題があった場合に 返されます。

あなたが言うように、 move_uploaded_file が返されているため、画像は動いていませんFALSE
コードを次のように変更することを証明できます。

var_dump(move_uploaded_file($_FILES["imageUp"]["tmp_name"],
    "C:/xampp/htdocs/" . $_FILES["image"]["name"]));

そして、何が戻ってくるのかを見てください。

move_uploaded_file次の場合に FALSE を返します。

  1. 宛先が存在しません
  2. サーバーには、ファイルを移動先に移動するための十分な権限がありません
  3. php.ini 変数よりも大きいため、ファイルはアップロードされませんでしたupload_max_filesize
  4. php.ini 変数よりも大きいため、ファイルはアップロードされませんでしたpost_max_size

これらすべての点を確認して修正すると、機能するはずです。

于 2013-02-16T16:24:02.403 に答える
0

が実行される本当の理由unlink()は、if 条件を無効にしたことです

if (file_exists($delete))を使用して//

ここにコードがあります。書きたいかもしれません:

if (isset($_FILES["image"]["name"]) && is_uploaded_file($_FILES['image']['tmp_name'])) {
    move_uploaded_file($_FILES["image"]["tmp_name"],
        "C:/xampp/htdocs/" . $_FILES["image"]["name"]);
    if (file_exists($delete)) {
        unlink($delete);
    } else {
        $img = $data['row']->image_name;
    }
}

そして必ず$delete保存してください!$deleteが ' ' と等しい場合を想像してくださいC:\users\your-name\some-private-file。さらにサポートが必要な場合は、このスニペットを囲むコードをさらに提供してください。

于 2013-02-16T16:30:46.693 に答える