2016-06-30 4 views
0

Ich versuche eine Bilddatei aus dem HTML-Formular zu bekommen, um sie in eine Datenbank einzufügen. Es funktioniert leider nicht, weil die Datei nicht gepostet wurde.

Alle anderen Variablen funktionieren, ich echote sie zu überprüfen, aber die Datei ist nicht. Wo ist mein Problem? Ich denke, es ist in der HTML-Form, die eingefügten Variablen sind auch in der gleichen Form, aber in verschiedenen Abteilungen, so dass die Post tatsächlich alle Daten in der Form zu post.php aber nicht die Bilddatei senden.

Wie Sie sehen, ich schließe bereits "enctype =" multipart/form-data "" ein.

Irgendwelche Hilfe bitte?

1) HTML-Markup:

<form action="post.php" method="post" enctype="multipart/form-data"> 
    <input type="hidden" id="MAX_FILE_SIZE" name="MAX_FILE_SIZE" value="300000"/> 
    <div> 
     <input type="file" id="fileselect" name="fileselect[]" multiple accept="image/*"/> 
     <div id="filedrag">or drop files here</div> 
    </div> 

    <div id="submitbutton"> 
     <button type="submit">Upload Files</button> 
    </div> 
</form> 

2) PHP-Code:

$title=isset($_POST['title'])?$_POST['title']:false; 
$desc=isset($_POST['description'])?$_POST['description']:false; 
$date=date("Y-M-D"); 
$city=isset($_POST['city'])?$_POST['city']:false; 
$user=isset($_POST['name'])?$_POST['name']:false; 
$price=isset($_POST['price'])?$_POST['price']:false; 
$table=isset($_POST['option'])?$_POST['option']:false; 
$imgfile=isset($_FILE['file']['name'])?$_FILE['fileselect']['name']:false; 
$tmp_dir=isset($_FILE['fileselect']['tmp_name'])?$_FILE['fileselect'['tmp_name']:false; 

$img_size=isset($_FILE['fileselect']['size'])?$_FILE['fileselect']['size']:false; 
$upload_dir='images/'; // directory 
    $imgExt=strtolower(pathinfo($imgfile,PATHINFO_EXTENSION)); // GET IMAGE EXTENSION 

    $valid_ext=array('jpeg','jpg','png','gif'); 

    //rename uploading image 

    $item_img=rand(1000,1000000).".".$imgExt; 
    // allow valid image format 

    if(in_array($imgExt, $valid_ext)) 
    { 
     if($img_size < 500000) 
     { 
      move_uploaded_file($tmp_dir,$upload_dir.$item_img); 
     } 
     else{ 
      $erMsg="Sorry , your file is too large"; 
     } 
    } 
    else{ 
     $erMsg="Sorry,only JPG,JPEG,PNG & GIF files are accepted :)"; 
    } 


$query = $pdo->prepare('INSERT INTO '.$table .'(title,description,image,date,city,user,price) VALUES(:title, :description, :image, :date, :city, :user, :price)'); 

$query->bindParam(':title', $title); 
$query->bindParam(':description', $desc); 
$query->bindParam(':image', $item_img); 
$query->bindParam(':date', $date); 
$query->bindParam(':city', $city); 
$query->bindParam(':user', $user); 
$query->bindParam(':price', $price); 
+1

Verwenden Sie enctype = "multipart/form-data" –

+0

verwenden Sie 'enctype =" multipart/form-data "' –

Antwort

2

<form enctype="multipart/form-data"> zum Senden von Ihrem Form es sollte korrekte enctype Attribut haben.

<form action="script.php" enctype="multipart/form-data" method="post"> 
    <input type="file" name="file"> 
    <input type="submit"> 
</form> 
+0

gemäß den Regeln dieser Website Antworten sollten als Antworten geschrieben werden, keine Kommentare! –

+1

Ich habe bearbeitet, um den "enctype" hinzuzufügen, weil es enthalten war, aber noch nicht funktionierte. meine schlechte, immer noch nicht funktioniert –

+0

@ JeanOuédraogo Vielleicht haben Sie Tippfehler in Array-Namen? sollte es '$ _FILES' (Mehrfachform) sein und Sie haben' $ _FILE' in Ihrem Code –

1

, wenn Sie mit Datei wie Bilder arbeiten, die Dateien

0

Haben Sie gesehen, dass Sie einen Tippfehler an der Linie haben?

$tmp_dir=isset($_FILE['fileselect'['tmp_name'])$_FILE['fileselect'['tmp_name']:false; 

Sie vermissen ] nach fileselect '

Sie sicher, dass !!

+0

ja das ist dank erledigt –

Verwandte Themen