2017-03-07 15 views
1

これはすべて、私から不明なインデックスエラー:imageを取得することから始まりました。私は前にチェックを入れていたので、もう一度エラーを見る必要はありませんでした。しかし、私は画像がアップロードされていないことを知っています。私は正当なイメージを使ってテストしましたが、何も動いていません。私はこれを何時間も苦労してきました。助けてください。画像はMySQLでアップロードされていません

<html> 
    <body> 
     <form action="images-add.php" method="post" enctyp="multipart/form-data"> 
     <input type="file" name="image" /> 

     <input type="submit" name="sum" value="upload" /> 
     </form> 
    </body> 
</html> 
<?php 
include('connection.php'); 

if(isset($_POST['image'])) { 

if(empty($_FILES) || !isset($_FILES['image'])){ 
echo "Please Add an Image"; 
}else{ 
if(getimagesize($_FILES['image']['tmp_name']) == FALSE){ 
      $image= addslashes($_FILES(['image']['tmp_name']));  
      $name= addslashes($_FILES(['image']['name'])); 
      $image= file_get_contents($image); 
      $image= base64_encode($image); 
      saveimage($name, $image); 
    } 
    } 
} 

function saveimage($name, $image){ 
     $con= mysql_connect("localhost", "root", ""); 
     mysql_select_db("hw2", $con); 
     $qry= "insert into images (name, image) values ('$name', '$image')"; 
     $result= mysql_query($qry,$con); 
    if($result) { 
    echo "<br/> Image Uploaded."; 
    }else{ 
     echo "Not Uploaded";  
    } 
    } 
?> 
+0

私が読んだところでは、mysqlのフィールドイメージの定義になる可能性があります –

+2

データベースにファイルを保存しないでください。 http://stackoverflow.com/a/41235395/267540特別にbase64を符号化しました – e4c5

+0

正しいenctypを 'enctype'に変更し、mysqlの代わりにmysqliを使用してください。 – Rose

答えて

0

あなたのHTMLフォームでenctypeenctypを変更してください。 はも

$name= addslashes($_FILES(['image']['name'])); 

から、

$image= addslashes($_FILES['image']['tmp_name']); 

そして このコード行に

$image= addslashes($_FILES(['image']['tmp_name'])); 

からコード を更新

$name= addslashes($_FILES['image']['name']); 

完全なコードは以下の通りです。

<html> 
    <body> 
     <form action="" method="POST" enctype="multipart/form-data"> 
     <input type="file" name="image" /> 

     <input type="submit" name="sum" value="upload" /> 
     </form> 
    </body> 
</html> 
<?php 
include('connection.php'); 

if($_POST){ 
    if(empty($_FILES) || !isset($_FILES['image'])){ 
     echo "Please Add an Image"; 
    }else{ 
     if(getimagesize($_FILES['image']['tmp_name'])){ 

       $image= addslashes($_FILES['image']['tmp_name']);  
       $name= addslashes($_FILES['image']['name']); 
       $image= file_get_contents($image); 
       $image= base64_encode($image); 
       saveimage($name, $image); 
     } 
    } 
} 

function saveimage($name, $image){ 
    $con= mysql_connect("localhost", "root", ""); 
    mysql_select_db("hw2", $con); 
    $qry= "insert into images (name, image) values ('$name', '$image')"; 
    $result= mysql_query($qry,$con); 

    if($result) { 
     echo "<br/> Image Uploaded."; 
    }else{ 
     echo "Not Uploaded";  
    } 
} 
?> 

このコードがうまくいければ幸いです。

+0

DB内のパスとフォルダ内のイメージを保存することにしました。それは機能していませんでした。この提案に基づいてコードを最初から書き直しましたが、うまくいきませんでした。 – Rico

+0

あなたのデータベーステーブル名 "画像"列 "画像"のデータ型は何ですか? – Shujaat

+0

データベースでは、 "images"という名前のテーブルには "image"という名前のカラムのBlobデータ型が必要です。その後、イメージを保存することができます。 データ型がblobでない場合は、イメージのパスは保存できますが、イメージ自体は保存できません。 – Shujaat

関連する問題