0

私のコード:

if(isset($_FILES['image'])){
    $allowedExts = array('jpg', 'gif', 'png');
    $extension = end(explode('.', $_FILES['image']['name']));
    if(in_array($extension, $allowedExts)){
        if($_FILES['image']['size'] < 50000){
            if ($_FILES['image']['error'] > 0){
                $uploaderror = $_FILES['image']['error'];
            }else{
                $uploaderror = 'FALLBACK ERROR';
                if(file_exists('..images/'.$_FILES['image']['name'])){
                    $uploaderror = 'The file <strong>'.$_FILES['image']['name'].'</strong> already exists in the images directory.';
                }else{
                    move_uploaded_file($_FILES['file']['tmp_name'], '..images/'.$_FILES['file']['name']);
                    $uploadsuccess = $_FILES['file']['name'];
                }
            }
        }else{$uploaderror = 'The image is too large.';}
    }else{$uploaderror = 'Only images (.jpg, .png, and .gif) are allowed.';}
}else{$uploaderror = 'No attempt';}



出力: $uploaderrorが返されFALLBACK ERROR$uploadsuccess設定されません。ファイルがspeicifedディレクトリに表示されておらず、サーバーで見つかりません。私が間違っていることを教えてください。ありがとうございました!

4

1 に答える 1

1

/..と前が欠落していimagesます。これを修正するには、次のように変更します。

move_uploaded_file($_FILES['file']['tmp_name'], '..images/'.$_FILES['file']['name']);

次のように:

move_uploaded_file($_FILES['file']['tmp_name'], '../images/'.$_FILES['file']['name']);

コードをターミナルで実行すると、次の応答が返されます。

..images:そのようなファイルやディレクトリはありません

編集

私はあなたが忘れた別の場所を見つけました、/そしてそれはあなたのfile_exists()チェックにあります。

コードを読みやすくするために、コードもクリーンアップしました。

<?php
$errors = array();
$allowedExts = array('jpg', 'gif', 'png');
$extension = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
if(!isset($_FILES['image'])){
    $errors[] = "No attempt.";
}
if(in_array($extension, $allowedExts)){
    $errors[] = "Only images (.jpg, .png, and .gif) are allowed.";
}
if($_FILES['image']['size'] > 50000){
    $errors[] = "The image is too large.";
}
if ($_FILES['image']['error'] <= 0){
    $errors[] = $_FILES['image']['error'];
}
if(file_exists('../images/'.$_FILES['image']['name'])){
    $errors[] = 'The file <strong>'.$_FILES['image']['name'].'</strong> already exists in the images directory.';
}

// No errors found!
if(count($errors) == 0){
    move_uploaded_file($_FILES['file']['tmp_name'], '../images/'.$_FILES['file']['name']);
    $uploadsuccess = $_FILES['file']['name'];
}
于 2012-12-28T22:02:47.570 に答える