PHP-Formular zum Hochladen mehrerer Bilder mit einer Eingabe

Lesezeit: 9 Minuten

PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
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.

das ist meine upload.php

<?php
include("../include/session.php");

session_start();
$allowedExts = array("jpeg", "jpg", "png", "gif");
$extension = end(explode(".", $_FILES["upload"]["name"]));

if(isset($_FILES['upload']['tmp_name']))
{
    for($i=0; $i < count($_FILES['upload']['tmp_name']);$i++)
    {

        if (($_FILES["upload"]["name"] < 90000000000000000)
            && in_array($extension, $allowedExts)) {
                if ($_FILES["upload"]["error"] > 0)
                {
                    header('location: '.$error); die;
                }
                else
                {

                    if (file_exists("../icons/".$_SESSION["username"] ."https://stackoverflow.com/" . $_FILES["upload"]["name"]))
                    {
                    echo "error";
                    }
                    else
                    {
                        if(!is_dir("../icons/". $_SESSION["username"] ."https://stackoverflow.com/")) {
                            mkdir("../icons/". $_SESSION["username"] ."https://stackoverflow.com/");
                        }

                        $temp = explode(".",$_FILES["upload"]["name"]);
                        $file = rand(1,999999999999) . '.' .end($temp);

                        move_uploaded_file($_FILES["upload"]["tmp_name"], "../icons/". $_SESSION["username"] ."https://stackoverflow.com/". $file);  
                    }
                }
            }
        } else {
            echo "yep error";
        }
    }
} 
?>

wenn ich die leitungen rausnehme

if(isset($_FILES['upload']['tmp_name']))
{
    for($i=0; $i < count($_FILES['upload']['tmp_name']);$i++)
    {

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

    – MRH GAMERZ PRO

    18. Januar um 7:33 Uhr

1646261047 52 PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
Kalpesh Rajai

extract($_POST);
$error=array();
$extension=array("jpeg","jpg","png","gif");
foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name) {
    $file_name=$_FILES["files"]["name"][$key];
    $file_tmp=$_FILES["files"]["tmp_name"][$key];
    $ext=pathinfo($file_name,PATHINFO_EXTENSION);

    if(in_array($ext,$extension)) {
        if(!file_exists("photo_gallery/".$txtGalleryName."/".$file_name)) {
            move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$file_name);
        }
        else {
            $filename=basename($file_name,$ext);
            $newFileName=$filename.time().".".$ext;
            move_uploaded_file($file_tmp=$_FILES["files"]["tmp_name"][$key],"photo_gallery/".$txtGalleryName."/".$newFileName);
        }
    }
    else {
        array_push($error,"$file_name, ");
    }
}

und Sie müssen Ihren HTML-Code überprüfen

<form action="create_photo_gallery.php" method="post" enctype="multipart/form-data">
    <table width="100%">
        <tr>
            <td>Select Photo (one or multiple):</td>
            <td><input type="file" name="files[]" multiple/></td>
        </tr>
        <tr>
            <td colspan="2" align="center">Note: Supported image format: .jpeg, .jpg, .png, .gif</td>
        </tr>
        <tr>
            <td colspan="2" align="center"><input type="submit" value="Create Gallery" id="selectedButton"/></td>
        </tr>
    </table>
</form>

Schöner Link auf:

Hochladen einer einzelnen PHP-Datei mit unterschiedlichen grundlegenden Erklärungen.

Hochladen der PHP-Datei mit der Validierung

Hochladen mehrerer PHP-Dateien mit Validierung Klicken Sie hier, um den Quellcode herunterzuladen

PHP/jQuery Mehrere Dateien hochladen mit ProgressBar und Validierung (Klicken Sie hier, um den Quellcode herunterzuladen)

So laden Sie Dateien in PHP hoch und speichern sie in einer MySQL-Datenbank (Klicken Sie hier, um den Quellcode herunterzuladen)

  • 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.

    – Kostbarer Tom

    18. Juli 2017 um 8:50 Uhr

  • @AsifMehmood schau mal hier: javascripthive.info/php/…

    – Kalpesh Rajai

    30. Juli 2017 um 12:04 Uhr

  • 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

PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
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/>';
        }
    }
}

http://www.allinworld99.blogspot.com/2015/05/php-multiple-file-upload.html

  • 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

1646261048 845 PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
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

1646261048 256 PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
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>';

         }

     }
}

?>

Jquery-Code

<script>
 $(document).ready(function() { 

            $('#photoimg').die('click').live('change', function()            { 

                $("#imageform").ajaxForm({target: '#preview', 
                     beforeSubmit:function(){ 

                    console.log('ttest');
                    $("#imageloadstatus").show();
                     $("#imageloadbutton").hide();
                     }, 
                    success:function(){ 
                    console.log('test');
                     $("#imageloadstatus").hide();
                     $("#imageloadbutton").show();
                    }, 
                    error:function(){ 
                    console.log('xtest');
                     $("#imageloadstatus").hide();
                    $("#imageloadbutton").show();
                    } }).submit();


            });
        }); 
</script>

Wordpress Benutzer und Usermeta Verbinden mehrerer Zeilen in einer Tabelle
Alpesh Navadiya

Hochladen mehrerer Bilder mit anderen taBLE $sql1 = “INSERT INTO event(title) VALUES(‘$title’)”;

        $result1 = mysqli_query($connection,$sql1) or die(mysqli_error($connection));
        $lastid= $connection->insert_id;
        foreach ($_FILES["file"]["error"] as $key => $error) {
            if ($error == UPLOAD_ERR_OK ){
                $name = $lastid.$_FILES['file']['name'][$key];
                $target_dir = "photo/";
                $sql2 = "INSERT INTO photos(image,eventid) VALUES ('".$target_dir.$name."','".$lastid."')";
                $result2 = mysqli_query($connection,$sql2) or die(mysqli_error($connection));
                move_uploaded_file($_FILES['file']['tmp_name'][$key],$target_dir.$name);
            }
        }

Und wie zu holen

$query = "SELECT * FROM event ";
$result = mysqli_query($connection,$query) or die(mysqli_error());


  if($result->num_rows > 0) {
      while($r = mysqli_fetch_assoc($result)){
        $eventid= $r['id'];
        $sqli="select id,image from photos where eventid='".$eventid."'";
        $resulti=mysqli_query($connection,$sqli);
        $image_json_array = array();
        while($row = mysqli_fetch_assoc($resulti)){
            $image_id = $row['id'];
            $image_name = $row['image'];
            $image_json_array[] = array("id"=>$image_id,"name"=>$image_name);
        }
        $msg1[] = array ("imagelist" => $image_json_array);

      }

in ajax $(document).ready(function(){ $(‘#addCAT’).validate({ rules:{name:required:true}submitHandler:function(form){var formurl = $(form).attr( ‘action’); $.ajax({ url: formurl,type: “POST”,data: new FormData(form),cache: false,processData: false,contentType: false,success: function(data) {window.location .href=”https://stackoverflow.com/questions/24895170/{{%20url(“admin/listcategory’)}}”;}}); } })})

1646261049 876 PHP Formular zum Hochladen mehrerer Bilder mit einer Eingabe
Pankaj Upadhyay

$total = count($_FILES['txt_gallery']['name']);
            $filename_arr = [];
            $filename_arr1 = [];
            for( $i=0 ; $i < $total ; $i++ ) {
              $tmpFilePath = $_FILES['txt_gallery']['tmp_name'][$i];
              if ($tmpFilePath != ""){
                $newFilePath = "../uploaded/" .date('Ymdhis').$i.$_FILES['txt_gallery']['name'][$i];
                $newFilePath1 = date('Ymdhis').$i.$_FILES['txt_gallery']['name'][$i];
                if(move_uploaded_file($tmpFilePath, $newFilePath)) {
                  $filename_arr[] = $newFilePath;
                  $filename_arr1[] = $newFilePath1;

                }
              }
            }
            $file_names = implode(',', $filename_arr1);
            var_dump($file_names); exit;

916910cookie-checkPHP-Formular zum Hochladen mehrerer Bilder mit einer Eingabe

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy