2017-01-05 15 views
0

私のフォルダにファイルをアップロードする際に問題があります。コードを実行すると、「ファイルはイメージ画像/ jpegです。申し訳ありません、ファイルは既に存在します。あなたのファイルはアップロードされていません。」というメッセージが表示されます。しかし、それは私が前にアップロードされたファイルをis'nt。」htmlでファイルをアップロードしても、フォルダにアップロードされないPHP

私の第二の問題は、彼が私のフォルダに自分の画像を入れていないということである。

は、これは私のuxu.php

<div class="overlay-content"> 
     <form action="../uploadfile.php" method="post" enctype="multipart/form-data" class="overlay-form"> 
      <h1>Upload gemaakt werk</h1><br><br> 
      <label>Titel</label> 
      <input type="text" class="aa-field"><br><br> 
      <label>Text</label> 
      <textarea rows="4" class="aa-area"> </textarea><br><br> 
      <label>Foto</label> 
      <input class="aa-file" type="file" name="art_img" id="fileToUpload"><br><br> 
      <input type="submit" name="submit" class="btn-upload-article" value="Upload"> 
     </form> 
     </div> 

これですあなたのERRを分離することができ

<?php 
$target_dir = "img_upload/"; 
$target_file = $target_dir . basename($_FILES["art_img"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) { 
    $check = getimagesize($_FILES["art_img"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
    } else { 
     echo "File is not an image."; 
     $uploadOk = 0; 
    } 
} 
// Check if file already exists 
if (file_exists($target_file)) { 
    echo "Sorry, file already exists."; 
    $uploadOk = 0; 
} 
// Check file size 
if ($_FILES["art_img"]["size"] > 500000) { 
    echo "Sorry, your file is too large."; 
    $uploadOk = 0; 
} 
// Allow certain file formats 
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
&& $imageFileType != "gif") { 
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; 
    $uploadOk = 0; 
} 
// Check if $uploadOk is set to 0 by an error 
if ($uploadOk == 0) { 
    echo "Sorry, your file was not uploaded."; 
// if everything is ok, try to upload file 
} else { 
    if (move_uploaded_file($_FILES["art_img"]["tmp_name"], $target_file)) { 
     echo "The file ". basename($_FILES["art_img"]["name"]). " has been uploaded."; 
    } else { 
     echo "Sorry, there was an error uploading your file."; 
    } 
} 
?> 

This are my folders

+1

コードは、それが想定していたように見えます。代わりに 'if(file_exists($ target_file)== false){'を試してみるかもしれませんが、正当なものです。 –

+0

うん。 ** Kraang Prime **によれば、あなたのコードは実行するために書かれたものとまったく同じです。 1つ1つ表示されるすべてのエラーについて混乱しているようです。各エラーブロックで 'die();'を使うと、条件が失敗したときにスクリプトが実行されていないことを確認できます。ここでは、一度にすべてのエラーを表示しようとしています。たぶんそれは、表示されているすべてのエラーを表示する理由です。 – Perumal

+0

ありがとう!それはうまくいった!唯一の問題は、彼が自分の画像を私のimg_uploadフォルダに入れないことです。なぜ誰が知っていますか? –

答えて

0

私uploadfile.phpですhtml br要素またはphp exit()/ die()関数を使用して、最初のエラーを処理します。 File_exists、ファイルサイズ、およびファイル形式の検証は、送信後の状態以外で実行されるため、フォームが送信されなくてもエラーメッセージが表示されます。

私はあなたのPHP環境はパスを見つけることができないと思うので、絶対パスを指定する必要があります。アップロードディレクトリにもchmodの書き込み権限

変更

$target_dir = "img_upload/"; 

$target_dir = __DIR__ . "/img_upload/"; 

にチェック。
あなたは、あなたの場合(ISSET($ _ POST [ "提出"]))の条件内のコードを追加することにより、PHPでそれを確認することができます。

if (!is_writable(dirname($target_file))) { 
    exit("Your upload path is incorrect or has no permissions"); 
} 

をとにかく、あなたはこの最後のPHPコードを使用することができます

<?php 
if(isset($_POST["submit"])) { 

    $target_dir = __DIR__ . "/img_upload/"; 
    $target_file = $target_dir . basename($_FILES["art_img"]["name"]); 
    $uploadOk = 1; 
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
    // Check if image file is a actual image or fake image 
    $check = getimagesize($_FILES["art_img"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . ".<br>"; 
     $uploadOk = 1; 
    } else { 
     exit("File is not an image."); 
     $uploadOk = 0; 
    } 
    // Check if file already exists 
    if (file_exists($target_file)) { 
     exit("Sorry, file already exists."); 
     $uploadOk = 0; 
    } 
    // Check file size 
    if ($_FILES["art_img"]["size"] > 500000) { 
     exit("Sorry, your file is too large."); 
     $uploadOk = 0; 
    } 
    // Allow certain file formats 
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" 
    && $imageFileType != "gif") { 
     exit("Sorry, only JPG, JPEG, PNG & GIF files are allowed."); 
     $uploadOk = 0; 
    } 
    // Check if $uploadOk is set to 0 by an error 
    if ($uploadOk == 0) { 
     exit("Sorry, your file was not uploaded."); 
    // if everything is ok, try to upload file 
    } else { 

     if (is_writable(dirname($target_file))) { 
      if (move_uploaded_file($_FILES["art_img"]["tmp_name"], $target_file)) { 
       exit("The file ". basename($_FILES["art_img"]["name"]). " has been uploaded."); 
      } else { 
       exit("Sorry, there was an error uploading your file."); 
      } 
     } else { 
      exit("Your upload path is incorrect or has no permissions"); 
     } 
    } 

} 

?> 
+0

ありがとう!それを変更しました。今度は "File is image - image/png。 ファイルwolk2.pngがアップロードされました。"というメッセージが表示されます。 "だからそれはいいですが、彼はまだそれを私のフォルダに入れません。 –

+0

最終コードに少し問題がありました。target_dir ... __img_uploasd__を__img_upload__に変更し、uploadfile.phpが置かれているディレクトリに/ img_uploadディレクトリが存在するかどうかを確認してください。 – medskill

+0

はい私はそれを変更しました。私は私のフォルダとポストにpngを追加しました..私はそれが大丈夫だと思いますか? –

関連する問題