PHP-Formular zum Hochladen mehrerer Bilder mit einer Eingabe
Lesezeit: 9 Minuten
clvxc
Ich versuche schon seit geraumer Zeit, dies zum Laufen zu bringen. Aber ich schaffe es nicht, es zum Laufen zu bringen. Ich wollte ein Formular zum Hochladen mehrerer Bilder mit nur einer Eingabe haben.
Mit der entsprechenden schließenden Klammer scheint es gut zu funktionieren. Das Bild wird einwandfrei hochgeladen. Aber die Sache ist, es erlaubt mir nur, eine hochzuladen.
Bitte, ich brauche wirklich Ihre Expertise. Danke
Beachten Sie diesen Link stackoverflow.com/questions/3215324/…
– Hassan Gilak
22. Juli 2014 um 18:45 Uhr
stackoverflow.com/questions/27118633/… Hier können Sie den Link zur Antwort durchgehen
und wie speichert man diese Bilder in der Datenbank?
– Asif Mehmood
13. Juli 2016 um 8:38 Uhr
@AsifMehmood Es ist wirklich keine gute Idee, ein Bild als Blob-Datei in der Datenbank zu speichern, es sei denn, Sie arbeiten an einem kleinen und nicht SEO-suchenden Projekt.
Warum verwenden extract($_POST); ? Ich entferne es und die Codes funktionieren gut. Und extract an $_POST scheint schlechte Codierungspraktiken zu sein. Sie könnten die Warnung finden „Verwenden Sie extract() nicht für nicht vertrauenswürdige Daten wie Benutzereingaben (z. B. $_GET, $_FILES usw.)“ im php.net-Handbuch php.net/manual/en/function.extract.php
– Schlüssel Shang
9. August 2017 um 9:04 Uhr
@PreciousTom SO was ist die Alternative, um die Bilder nicht in der Datenbank zu speichern?
– Asif Mehmood
25. Oktober 2017 um 12:11 Uhr
Merbin Joe
Hochladen mehrerer Bilder mit vollständigem PHP-Quellcode und Vorschau unter dem folgenden Link verfügbar.
Beispielcode:
if (isset($_POST['submit'])) {
$j = 0; //Variable for indexing uploaded image
$target_path = "uploads/"; //Declaring Path for uploaded images
for ($i = 0; $i < count($_FILES['file']['name']); $i++) { //loop to get individual element from the array
$validextensions = array("jpeg", "jpg", "png"); //Extensions which are allowed
$ext = explode('.', basename($_FILES['file']['name'][$i])); //explode file name from dot(.)
$file_extension = end($ext); //store extensions in the variable
$target_path = $target_path.md5(uniqid()).
".".$ext[count($ext) - 1]; //set the target path with a new name of image
$j = $j + 1; //increment the number of uploaded images according to the files in array
if (($_FILES["file"]["size"][$i] < 100000) //Approx. 100kb files can be uploaded.
&& in_array($file_extension, $validextensions)) {
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) { //if file moved to uploads folder
echo $j.
').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
} else { //if file was not moved.
echo $j.
').<span id="error">please try again!.</span><br/><br/>';
}
} else { //if file size and file type was incorrect.
echo $j.
').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
}
}
}
Ich möchte nur hinzufügen, dass die anfängliche $target_path-Variable innerhalb der for-Schleife stehen muss, sonst werden die Dateinamen, die über md5 gehasht werden, verkettet. Außerdem habe ich die Hash-Dateinamenmethode entfernt, da sie für meine Anforderungen nicht geeignet war.
– Stan Howe
7. Juni 2020 um 16:08 Uhr
swati antre
<?php
if(isset($_POST['btnSave'])){
$j = 0; //Variable for indexing uploaded image
$file_name_all="";
$target_path = "uploads/"; //Declaring Path for uploaded images
//loop to get individual element from the array
for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
$validextensions = array("jpeg", "jpg", "png"); //Extensions which are allowed
$ext = explode('.', basename($_FILES['file']['name'][$i]));//explode file name from dot(.)
$file_extension = end($ext); //store extensions in the variable
$basename=basename($_FILES['file']['name'][$i]);
//echo"hi its base name".$basename;
$target_path = $target_path .$basename;//set the target path with a new name of image
$j = $j + 1;//increment the number of uploaded images according to the files in array
if (($_FILES["file"]["size"][$i] < (1024*1024)) //Approx. 100kb files can be uploaded.
&& in_array($file_extension, $validextensions)) {
if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {//if file moved to uploads folder
echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
/***********************************************/
$file_name_all.=$target_path."*";
$filepath = rtrim($file_name_all, '*');
//echo"<img src="https://stackoverflow.com/questions/24895170/.$filepath." >";
/*************************************************/
} else {//if file was not moved.
echo $j. ').<span id="error">please try again!.</span><br/><br/>';
}
} else {//if file size and file type was incorrect.
echo $j. ').<span id="error">***Invalid file Size or Type***</span><br/><br/>';
}
}
$qry="INSERT INTO `eb_re_about_us`(`er_abt_us_id`, `er_cli_id`, `er_cli_abt_info`, `er_cli_abt_img`) VALUES (NULL,'$b1','$b5','$filepath')";
$res = mysql_query($qry,$conn);
if($res)
echo "<br/><br/>Client contact Person Information Details Saved successfully";
//header("location: nextaddclient.php");
//exit();
else
echo "<br/><br/>Client contact Person Information Details not saved successfully";
}
?>
Hier $file_name_all Und $Dateipfad 1 Uplode-Dateinamen 2 Mal erhalten?
Ist das eine Antwort auf die Frage? Wenn ja, geben Sie bitte deutlich an, inwieweit es die Frage löst. Wenn dies eine eigene Frage ist, löschen Sie sie hier und stellen Sie eine neue Frage.
– ImportanceOfBeingErnest
26. November 2016 um 11:21 Uhr
Prem Tiwari
PHP-Code
<?php
error_reporting(0);
session_start();
include('config.php');
//define session id
$session_id='1';
define ("MAX_SIZE","9000");
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
//set the image extentions
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$uploaddir = "uploads/"; //image upload directory
foreach ($_FILES['photos']['name'] as $name => $value)
{
$filename = stripslashes($_FILES['photos']['name'][$name]);
$size=filesize($_FILES['photos']['tmp_name'][$name]);
//get the extension of the file in a lower case format
$ext = getExtension($filename);
$ext = strtolower($ext);
if(in_array($ext,$valid_formats))
{
if ($size < (MAX_SIZE*1024))
{
$image_name=time().$filename;
echo "<img src="".$uploaddir.$image_name."" class="imgList">";
$newname=$uploaddir.$image_name;
if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname))
{
$time=time();
//insert in database
mysql_query("INSERT INTO user_uploads(image_name,user_id_fk,created) VALUES('$image_name','$session_id','$time')");
}
else
{
echo '<span class="imgList">You have exceeded the size limit! so moving unsuccessful! </span>';
}
}
else
{
echo '<span class="imgList">You have exceeded the size limit!</span>';
}
}
else
{
echo '<span class="imgList">Unknown extension!</span>';
}
}
}
?>
Beachten Sie diesen Link stackoverflow.com/questions/3215324/…
– Hassan Gilak
22. Juli 2014 um 18:45 Uhr
stackoverflow.com/questions/27118633/… Hier können Sie den Link zur Antwort durchgehen
– MRH GAMERZ PRO
18. Januar um 7:33 Uhr