2016-12-14 18 views
-2

Wie und wo speichern ich Benutzerfotos? Ich habe hier einige sehr gute Antworten gelesen, aber sie erklären nicht, welchen Code ich schreiben muss und wohin ich die Fotos schicken soll.Wie speichere ich PHP-Bilder?

Bisher ist dies der Code, den ich habe:

profile.php:

<form id="form2" action="upload.php" method="post" enctype="multipart/form-data"> 
<p id="p1">Change profile picture:</p> <br /> 
<input type="file" name="fileToUpload" id="fileToUpload"><br /> 
<br><input id="sub1" type="submit" value="Change profile picture" name="submit"><br /> 
</form> 

upload.php:

<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["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 if file already exists 
if (file_exists($target_file)) { 
echo "Sorry, file already exists."; 
$uploadOk = 0; 
} 
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
if($check !== false) { 
    echo "File is an image - " . $check["mime"] . "."; 
    $uploadOk = 1; 
} else { 
    echo "File is not an image."; 
    $uploadOk = 0; 
} 
$save_path="userimg"; // Folder where you wanna move the file. 
$myname = strtolower($_FILES['image']['tmp_name']); //You are renaming the file here 
move_uploaded_file($_FILES['image']['tmp_name'], $save_path.$myname); // Move the uploaded file to the desired folder 
} 
?> 

ich hier gelesen auf, dass große Seiten wie Facebook twittern usw. usw. Speichern Sie keine Dateien in Datenbanken, da sie zu viel Speicherplatz auf dem Server beanspruchen, also speichern Sie sie in Ordnern. Kann mir jemand helfen, wie ich das Schritt für Schritt mache?

+0

alle in der PHP-Dokumentation dokumentiert. http://php.net/manual/en/features.file-upload.php – ceejayoz

+0

@ceejayoz zeigt nicht, wo die Dateien gespeichert werden – 6623ms

+0

Es zeigt die Verwendung der Funktion 'move_uploaded_file'. * Wo * diese Dateien zu speichern, liegt bei Ihnen. Setz sie dort hin wo du sie brauchst. – ceejayoz

Antwort

0

Angenommen, Ihr Code funktioniert ohne Bugs. Lassen Sie mich erklären, was hier vor sich geht. der HTML-Teil ist ziemlich klar, und das multipart Ding wird verwendet, um zum Browser zu sagen, dass wir Dateien hochladen werden.

Also, Springen zu PHP-Code:

<?php 

$target_dir = "uploads/"; 
//This is the directry where the images will be uploaded, "server_path/uploads" 

//Now since we have the target directory, let's define the actual path. 
//Actual Path = Target Dir + File Name + File Extension 

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 

//By now, we have just madefined locations, (in the form of Variables) 

//Now, lets do few checks, and make a success flag to keep a track 
$uploadOk = 1; 



// Check if file already exists 
if (file_exists($target_file)) { 
    //If the file already exists 
    echo "Sorry, file already exists."; 
    $uploadOk = 0; 
    //Echo and change the flag to False 
} 


// Check if image file is a actual image or fake image. 
//If file is image, then only image size will be returned 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
if(!($check)) { 
    //That is, the Check is false, the file is NOT AN IMAGE 
    echo "File is not an image."; 
    $uploadOk = 0; 
    //Echo, and change the Flag to false. 
} 


//Now check, if the flag is true, that means upload is OK, and NO ERRORS. 
//Then upload the file. 
if ($uploadOk) { 
    //If upload is OK, then go ahead 
    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file); 
    // Move the uploaded file to the desired folder 
} 
?> 

Das war einfach die Datei hochladen, können zusätzliche Prüfungen durchgeführt werden, wie die Datei-Größe Überprüfung usw. More Info on this W3 Page.

Was wird getan? Zuerst, sobald Sie die Datei auf der Schaltfläche Datei auswählen auswählen, wird die Datei auf eine fakepath verwiesen, die nur der Computer kennt (Datenabstraktion). Und dann, während Sie die Datei senden, werden die Daten des Bildes vom Browser (fakepath) an den Server gesendet, und der Server speichert in seinem Ordner temp_dir (oder äquiv. Ordner für temporären Speicher) und startet dann die Ausführung des Skripts. und in dem Skript, da wir den Speicherort $target_dir und den Dateinamen erwähnt haben, wie es ist, und dann move_uploaded_file, so der Server weiß, ist es Zeit, von einem fakepath zu einem Realpath zu bewegen ... Und Sie erhalten die Datei in dieses Verzeichnis. Wenn die move_uploaded_file nicht dort gewesen ist, dann wäre die temporäre Datei nach der Ausführung des Skripts oder einige Zeit danach getrennt worden (hängt davon ab, wie Sie den Server konfigurieren, php.ini Datei).

Hinweis: Das Upload-Verzeichnis (uploads/ in diesem Fall), muss bereits erstellt werden, Server wird nur Datei hinzufügen, und wenn die floder schon nicht da ist, wird es ausführen, (ohne Fehler), aber Die Datei wird nicht angezeigt (weil kein Ordner vorhanden ist).

Jetzt möchten Sie es zu einer Datenbank hinzufügen, Sie können diesen Link behalten und fügen Sie das zur Datenbank (eigentlich UPDATE der Datenbank), aber das ist eine andere Sache. (Ich sagte nur, weil du es in der Frage erwähnt hast).

Hinweis: Möglicherweise müssen Sie den Code ändern, um ihn gemäß Ihren Anforderungen zu verwenden.

this helps :)

+0

'C: \ wamp \ www \ xx \ uploads' ist dies ein gültiger Ort? – 6623ms

+0

ich bekomme diesen Fehler 'Undefinierter Index: Bild in C: \ wamp \ www \ xx \ upload.php in Zeile 39' – 6623ms

+0

' move_uploaded_file ($ _ FILES ['image'] ['tmp_name'], $ target_file); ' – 6623ms

0
$image14 = $_FILES['img']['name'];      //img your form input name="img" 
$image15 = $_FILES['img']['tmp_name']; 
$ext  = pathinfo($image14, PATHINFO_EXTENSION); 
$path2 = "images/" . time() . $image14;    // "image/" specify your foldername 
move_uploaded_file($image15, $path2);     // save $path2 into your database