2016-04-01 10 views
0

データベースにデータを入力して特定のディレクトリに画像をアップロードしようとしています。接続が失敗した場合、私のgetConnected()関数はエラー処理が含まれているので、私は成功した私のデータベースに接続しているHow to store file name in database, with other info while uploading image to server using PHP?PHP画像アップロードスクリプトがアップロードされているが失敗していない

require($_SERVER['DOCUMENT_ROOT']."/settings/functions.php"); 
// This is the directory where images will be saved 
$target = $_SERVER['DOCUMENT_ROOT']."/safetyarticles/images/"; 
$target = $target . basename($_FILES['article_img']['name']); 
date_default_timezone_set("America/Chicago"); 

// This gets all the other information from the form 
$article_name = $_POST['article_title']; 
$article_date = date("m/d/Y"); 
$article_creator = $_POST['article_creator']; 
$article_views = "0"; 
$article_content = $_POST['article_content']; 
$article_content_2 = $_POST['article_content_2']; 
$article_img = ($_FILES['article_img']['name']); 
$article_credit = $_POST['article_credit']; 


// Connect to database 
$conn = getConnected("safetyArticles"); 

// moves the image 
if(move_uploaded_file($_FILES['article_img']['tmp_name'], $target))  
{ 
// if upload is a success query data into db 
mysqli_query($conn, "INSERT INTO currentArticles (article_name, article_date, article_creator, article_content, article_content_2, article_img, article_credit) 
VALUES ('$article_name', '$article_date', '$article_creator', '$article_views', '$article_content', '$article_content_2', '$article_img', '$article_credit')") ; 

echo "The file ". basename($_FILES['article_img']['name']). " has been uploaded, and your information has been added to the directory"; 
} 
else { 
echo "Sorry, there was a problem uploading your file."; 
} 

:私はこの質問への答えを投票トップの修正版である以下のスクリプトを使用しています。

私はSorry, there was a problem uploading your file.エラーがスクリプトの最後から引き続き発生します。

何か不足していますか?私がしたことは、ここでデータベースがどのように接続されるか、そして変数など、いくつかのマイナーラインを変更することでした。また、ファイルがアップロードされた場合にのみクエリが実行されるようにしました。

私は何が欠けているのか分かりません。

この現在のスクリプトを変更して、$article_nameの値にイメージの名前を変更することもできますか?たとえば、記事名が「This Is The Article」の場合、画像はthis-is-the-first-article.jpgになりますか?

<form method="post" action="http://example.com/admin/articleCreate.php" enctype='multipart/form-data'> 
    <input type="text" name="article_title" placeholder="What Is The Name Of This Article?" id="article_title_input"> 
    <textarea name="article_content" placeholder="Write The Top Half Of Your Article Here." id="article_content_input"></textarea> 
    <input type="file" name="article_img" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input"> 
    <textarea name="article_content_2" placeholder="Write The Bottom Half Of Your Article Here." id="article_content_2_input"></textarea> 
    <input type="text" name="article_creator" placeholder="Who Is Writing This Article?" id="article_creator_input"> 
    <input type="text" name="article_credit" placeholder="If This Article Is Copied, What Website Was It Taken From?" id="article_credit_input"> 
    <input type="submit" value="Submit"> 
</form> 

そして私はvar_dump(is_uploaded_file($_FILES['article_img']['tmp_name']));を行なったし、それがtrue returnignです:

私のHTMLフォームがあります。

+0

ディレクトリ/ safetyarticles/images /が存在し、スクリプトに書き込み権限がありますか? –

+0

ディレクトリが存在し、 'safetyarticles'と' images'の両方に '777'パーミッションがあります。 –

+0

何かに777パーミッションを与えるのは良い習慣ではありません –

答えて

1

  • $_FILES['uploadedfile']
  • $_FILES['photo']
    • https://stackoverflow.com/revisions/36367407/4は、二つの異なるファイルアレイであり、あなたは、name属性として name="article_img"を使用しています。

      すべて同じものを使用する必要があります。

      エラー報告http://php.net/manual/en/function.error-reporting.phpはあなたにそれについて語っていました。

      エラーを見つけるのに役立つファイルの先頭にerror reportingを追加してください。

      <?php 
      error_reporting(E_ALL); 
      ini_set('display_errors', 1); 
      
      // Then the rest of your code 
      

      追記:の表示エラーが唯一のステージングで行われていない、と決して生産されなければなりません。


      追加編集:

      $target = $target . basename($_FILES['photo']['name']); 
      

      それはあなたの本当の編集、まだ間違った配列名だ場合。

    +0

    ちょうどあまりにもそれを修正。私はコードの名前が私のものと違っていたが、依然として動作していなかった。 –

    +0

    OPは元の投稿からあまりにも多くの編集を行っています。 –

    +0

    @ JesseElser次に、私の答えにあなたを示したようにエラー報告を追加します。それで何も得られないなら、私は自分の答えを削除します。 –

    0

    私はこの問題は、この行であると思う:これまで

    if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
    

    変更を:

    if(move_uploaded_file($_FILES['article_img']['tmp_name'], $target))  
    
    +0

    変更なしvar_dumpはファイルに対してfalseを返します。 –

    +0

    print_r($ _ FILES)できるので、入力ファイルが投稿されたかどうかを確認できます。 – hayzem

    0

    あなたのhtmlがあります

    <input type="file" name="article_img" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input"> 
    

    そして、あなたのPHPは$を待っています_FILES ['写真'] ['tmp_name']

    あなたのhtmlファイルの入力を次のように変更してください:

    <input type="file" name="photo" placeholder="If The Article Has An Image, Upload It Here." id="article_img_input"> 
    
    +0

    私は実際にそのphpの行を適切な 'article_img'という名前に変更しました。これは同じことをしています。 –

    +0

    この行についても$ target = $ targetを忘れないでください。 basename($ _FILES ['photo'] ['name']); –

    関連する問題