2016-09-02 4 views
0

Ich habe ein mobiles Web-App-Formular, wo ich auf die Kamera des mobilen Geräts zugreifen und ein Foto zusammen mit anderen erfassen Details, die in anderen Feldern im Formular erfasst werden. Mit php speichere ich die im Formular erfassten Informationen erfolgreich in einer mysql-Datenbank, aber das Bild wird nicht gespeichert. Ich habe nach einer Auflösung gesucht, kann aber nichts über die Verwendung von PHP mit<input type = "file" accept = "image/*; capture = kamera"> Bild in Datenbank speichern mit php

finden, um das Bild in einer Datenbank zu speichern. Das Datenbankfeld ist momentan Blob, aber das kann sich ändern, wenn es benötigt wird.

Das Formular funktioniert perfekt für alle anderen Daten, so ist das Problem mit meinem mangelnden Verständnis für den Umgang mit Bildern oder Dateien mit PHP. kann mir jemand helfen oder mich in die richtige Richtung weisen. Die Basis meines Codes ist unten eingefügt.

Die Formularspeicherung funktioniert einwandfrei, da die Eingabe bus_name in der Datenbank gespeichert wird, der Datensatz bus_img jedoch leer ist.

HTML

<div data-role="page" id="view_record"> 
    <div data-role="header"> 
    <a href="#" data-rel="back" class="ui-btn-right ui-btn ui-btn-icon-notext ui-corner-all ui-icon-back">Back</a> 
    <div data-role="main" class="ui-content"> 
    <form method="post" enctype="multipart/form-data" action="saveRecord.php"> 
     <label for="bus_name">Business Name:</label> 
     <input type="text" name="bus_name" id="bus_name" placeholder="Enter Business Name"> 

     <label for="bus_type">Business Type:</label> 
     <input type="text" name="bus_type" id="bus_type" placeholder="Enter Business Type"> 

     <label for="bus_tel">Business Tel:</label> 
     <input type="text" name="bus_tel" id="bus_tel" placeholder="Enter Business Tel No"> 

     <label for="bus_img">Business Photo:</label> 
     <input type="file" name="bus_img" id="bus_img" accept="image/*;capture=camera"> 

     <label for="comments">Comments:</label> 
     <textarea name="comments" id="comments" placeholder="Enter Comments"></textarea> 

     <input type="submit" value="Submit">  
    </form> 
    </div> 
    </div> 
</div> 

PHP

<?php 
$bus_img = $bus_name = ""; 

$servername = ""; 
$username = ""; 
$password = ""; 
$dbname = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 

    if (!$conn) 
    { 
     die("Connection failed: " . mysqli_connect_error());} 

    $bus_img = $_FILES["bus_img"]; 
    $bus_img = mysqli_real_escape_string($conn, $bus_img); 
    $bus_name = $_POST["bus_name"]; 

    $sql = "INSERT INTO tblLead(leadImage, occupantName) 

    VALUES ('$bus_img','$bus_name')"; 

    if (mysqli_query($conn, $sql)) 
    {  
    } else 
    { 
     echo "Error: " . $sql . mysqli_error($conn); 
    } 
    mysqli_close($conn); 
    exit();  
} 
?> 

jede Hilfe sehr geschätzt. Danke

+1

nicht unhöflich zu sein, aber wenn man nicht _anything_, wie zum Speichern von Bildern mit PHP finden kann, dann hast du nicht wirklich viel zu tun Suche. –

+0

suche in stackoverflow speichere das Bild in der Datenbank mit php – nelly2000

+0

Wo hast du den Upload JS, der dein Bild in ein Verzeichnis legt? Wenn Sie es haben, überprüfen Sie, ob das Bild hochgeladen wird oder nicht. Wenn es hochgeladen wird, können wir Ihnen weiter helfen, das zu schließen. –

Antwort

1

Erstens benötigt Dateihandhabung $_FILES und nicht $_POST.

Ihr Formulartag enthält keinen geeigneten Enktyp für die Verarbeitung von Dateien.

Gemäß dem Beispiel der manuellen auf Dateien Handhabung:

<form enctype="multipart/form-data" action="__URL__" method="POST"> 

Referenz:

Dann müssen Sie feststellen, dass (Datei) Daten zu entkommen und es gibt ein paar Möglichkeiten, dies zu tun.

Eines davon ist mysqli_real_escape_string($conn, $file)

Referenz:

Etwas, das man auch gegen alle Ihre Daten verwenden sollten, wie sie derzeit offen für eine SQL-Injection ist.

I.e. und durch Ersetzen:

$bus_img = $_POST["bus_img"]; 

mit:

$bus_img = $_FILES["bus_img"]; 
$bus_img = mysqli_real_escape_string($conn, $bus_img); 

Und stellen Sie sicher, dass die Datei nicht größer als die maximale Größe hochgeladen erlaubt/Set auf dem Server.

Verwenden Sie auch die richtige Fehlerüberprüfung.

+0

Danke, ich habe die vorgeschlagenen Änderungen an meinem Code vorgenommen (geändert in der Post als auch), getestet ohne Erfolg - was ist der Verweis oben auf das Hochladen der Datei gemacht - muss ich dies zuerst tun, so speichern Sie die Datei in einen Ordner auf meinem Gerät? Ich werde alle Fehlerbehandlung später hinzufügen, sobald ich den Datei-Handling-Teil funktioniert habe - ich verstehe das, richtig, um darauf hinzuweisen :-) – nelly2000

+0

Entschuldigung, müssen Sie die Referenz lesen, die Sie beim Hochladen von Dateien geschrieben haben - wird jetzt lesen – nelly2000

Verwandte Themen