Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder-Upload mit Copyright versehen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilder-Upload mit Copyright versehen

    Hallo Gemeinde,

    ich versuche mittels eines Formulars während des Bilduploads gleichzeitig ein Copyright mit abzuspeichern. Das Bildupload-Formular ist folgendermaßen aufgebaut:
    Code:
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 01:</td>
    <td><input name="fupload[]" type="file"></td>
    </tr>
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 02:</td>
    <td><input name="fupload[]" type="file"></td>
    </tr>
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 03:</td>
    <td><input name="fupload[]" type="file"></td>
    </tr>
    Kann ich diesem Formular gleichzeitig für jeden "fupload[] - Arrayeintrag" noch einen weiteren eindeutigen Wert "mitgeben" ? , sodass dieser Wert individuell dem vorangegangenem Arraywert zugeordnet wird?
    Jedem Bild soll nämlich ein eindeutiges Copyright zugeordnet werden.
    In etwa so:
    Code:
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 01:</td>
    <td><input name="fupload[]" type="file"></td>
    <td><input name="copyright[]" type="text"></td>
    </tr>
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 02:</td>
    <td><input name="fupload[]" type="file"></td>
    <td><input name="copyright[]" type="text"></td>
    </tr>
    
    <tr id="textfeld" valign="baseline"> 
    <td>Bild 03:</td>
    <td><input name="fupload[]" type="file"></td>
    <td><input name="copyright[]" type="text"></td>
    </tr>
    Viele Grüße und ein Frohes Neues Jahr!

  • #2
    Für dein Vorhaben würde ich dir raten, dass du dir die GD- und Image-Funktionen zu Gemüte führst. Mit diesen Funktionen kannst du ein Copyright-Watermark und darüberhinaus noch 1000 andere Sachen machen.

    http://php.net/manual/de/ref.image.php
    .

    Kommentar


    • #3
      Zitat von estebu Beitrag anzeigen
      Jedem Bild soll nämlich ein eindeutiges Copyright zugeordnet werden.
      seh ich nicht als watermark, eher:

      http://www.narf.ssji.net/~shtrom/wik...gemanipulation

      Kommentar


      • #4
        Würde das zweite Code-Beispiel nicht schon ausreichen? In dem Falle werden doch zwei Arrays angelegt. Man könnte jedem Upload die entsprechende Copyright-Eingabe mit dem selben Key zuweisen. In dem Fall müsste man jedoch anderweitig dafür Sorge tragen bzw. entsprechend die Eingaben überprüfen lassen, dass exakt so viele Copyrights eingegeben werden, wie Dateien hochgeladen werden. Ansonsten hat man z.B. 4 Dateien, aber nur ein Copyright für die 1. und die 4. eingegeben, wobei die Array-Keys allerdings 0-3 und 0-1 wären, was hieße das das Copyright der 4. Datei der 2. Datei zugewiesen werden würde.

        Ich persönlich würde allerdings auch die Variante mit dem Wasserzeichen bevorzugen.

        Kommentar


        • #5
          Danke für eure Hinweise! Ich denke, die Variante von Donevan2 ist die, die ich meine (und brauche) - ich kann auf gar keinen Fall ein Wasserzeichen auf die Bilder setzen und auch nicht von den Nutzern erwarten, dass sie ihre Bilder mit EXIF-Daten versorgen. Die Copyright-Angabe zu den Bildern wird später für das Abdrucken derselben in einem Katalog benötigt.

          In dem Fall müsste man jedoch anderweitig dafür Sorge tragen bzw. entsprechend die Eingaben überprüfen lassen, dass exakt so viele Copyrights eingegeben werden, wie Dateien hochgeladen werden. Ansonsten hat man z.B. 4 Dateien, aber nur ein Copyright für die 1. und die 4. eingegeben
          Hier könnte ich einen Standardwert zuordnen für den Fall, dass das Feld "Copyright" nicht ausgefüllt wurde.

          Das Problem besteht weiterhin darin, dem jeweils 1. File-Arraywert auch den jeweils 1. Copyright-Arraywert zuzuordnen - zumindest habe ich bisher keine Idee, wie ich das bewerkstelligen soll.
          nach dem absenden meines Formulars wird das Bildupload-Array folgendermaßen weiterverarbeitet:

          PHP-Code:
          for ($i=0;$i<=sizeof($_FILES['fupload']['name']); $i++) { 
          if (!empty(
          $_FILES['fupload']['name'][$i])) { 
           if (
          is_uploaded_file($_FILES['fupload']['tmp_name'][$i])) { 
              if ((
          $_FILES['fupload']['type'][$i]=='image/jpeg') OR ($_FILES['fupload']['type'][$i]=='image/pjpeg') OR ($_FILES['fupload']['type'][$i]=='image/gif')) { 
                  
          $Link_type=$_FILES['fupload']['type'][$i];
                  switch (
          $Link_type) { 
                      case 
          "image/jpeg" :
                          
          $Link=$_POST['Titel']."-".time()."-".$i.".jpg";break;
                      case 
          "image/gif" :
                          
          $Link=$_POST['Titel']."-".time()."-".$i.".gif";break;
                      default:
                          
          $Link=$_POST['Titel']."-".time()."-".$i.".jpg";break;
                  } 
                  
          $upFoto=$_FILES['fupload']['name'][$i];
                  
          $Ziel=$path_folder."/".$Link;
                  
                      
          copy($_FILES['fupload']['tmp_name'][$i], $Ziel) or die ("Konnte nicht kopieren");
                  
                  
          $insertSQL sprintf("INSERT INTO Filmanmeldungen_Bilder (Bild, ID) VALUES (%s, %s)",
                                         
          GetSQLValueString($Link"text"),
                                         
          GetSQLValueString($ID"text"));
                                         
                  
                  
          mysql_select_db($database_connect$connect);
          $Result1 mysql_query($insertSQL$connect) or die(mysql_error());
          header(sprintf("Location: %s"$BackGoTo));
              } else {
                  
          $BackGoTo.="&Error=".$Error_Upload_false." Grund: Foto-Nr $i ".$Error_Format; }
              } 
              else {    
              
          $BackGoTo.="&Error=".$Error_Upload_false." Grund: Foto-Nr $i ".UploadErrorFunc($_FILES['fupload']['error'][$i]);}
              }
              } 
          Hier wird also für jeden Bild-Arraywert der Filetype geprüft und entsprechend ein Dateiname generiert - dann das Bild umbenannt, hochgeladen/gespeichert und entsprechende Daten in die Datenbank eingetragen und zwar der generierte Name des Bildes und eine eindeutige ID des Uploadvorganges.
          Hier wäre es für mich sinnvoll, wenn zusätzlich in die Datenbank noch das jeweilige Copyright eingetragen werden könnte... aber wie hole ich innerhalb dieser Schleife noch das Copyright aus dem Formular?

          Kommentar


          • #6
            Nimm doch ein Array als Name. Dann kannst du mit einer ForEach über alle Elemente gehen und hast die Datei und das dazugehörige Copyright passend in einem Array.

            PHP-Code:
            <tr id="textfeld" valign="baseline"
            <
            td>Bild 01:</td>
            <
            td><input name="upload[0][file]" type="file"></td>
            <
            td><input name="upload[0][copyright]" type="text"></td>
            </
            tr>

            <
            tr id="textfeld" valign="baseline"
            <
            td>Bild 02:</td>
            <
            td><input name="upload[1][file]" type="file"></td>
            <
            td><input name="upload[1][copyright]" type="text"></td>
            </
            tr>

            <
            tr id="textfeld" valign="baseline"
            <
            td>Bild 03:</td>
            <
            td><input name="upload[2][file]" type="file"></td>
            <
            td><input name="upload[2][copyright]" type="text"></td>
            </
            tr

            Kommentar


            • #7
              Das klingt vielversprechend - nur jetzt die foreach-Schleife aufzubauen - das bereitet mir gerade hier Schwierigkeiten... Kannst du mir vielleicht kurz den Ansatz hierfür geben, sodass ich meinen vorhandenen
              PHP-Code:
              for ($i=0;$i<=sizeof($_FILES['fupload']['name']); $i++) {  ..... 
              Code entsprechend anpassen kann?

              Kommentar


              • #8
                Gib dir doch mal den Inhalt deiner $_POST und $_FILES Variablen aus, dann sollte das eigentlich relativ selbst erklärend sein.

                Im Grunde musst du ja nur schauen ob im $_POST Array ein passender Wert zu deinem $i existiert und diesen dann verwenden.

                PHP-Code:

                print_r
                ($_POST);
                print_R($_FILES);

                Array
                (
                    [
                upload] => Array
                        (
                            [
                0] => Array
                                (
                                    [
                copyright] => Test1
                                
                )

                            [
                1] => Array
                                (
                                    [
                copyright] => Test2
                                
                )

                        )

                )
                Array
                (
                    [
                upload] => Array
                        (
                            [
                name] => Array
                                (
                                    [
                0] => Array
                                        (
                                            [
                file] => test.gif
                                        
                )

                                    [
                1] => Array
                                        (
                                            [
                file] => test.gif
                                        
                )

                                )

                            [
                type] => Array
                                (
                                    [
                0] => Array
                                        (
                                            [
                file] => image/gif
                                        
                )

                                    [
                1] => Array
                                        (
                                            [
                file] => image/gif
                                        
                )

                                )

                            [
                tmp_name] => Array
                                (
                                    [
                0] => Array
                                        (
                                            [
                file] => C:\wamp\tmp\php80D9.tmp
                                        
                )

                                    [
                1] => Array
                                        (
                                            [
                file] => C:\wamp\tmp\php80DA.tmp
                                        
                )

                                )

                            [
                error] => Array
                                (
                                    [
                0] => Array
                                        (
                                            [
                file] => 0
                                        
                )

                                    [
                1] => Array
                                        (
                                            [
                file] => 0
                                        
                )

                                )

                            [
                size] => Array
                                (
                                    [
                0] => Array
                                        (
                                            [
                file] => 2608
                                        
                )

                                    [
                1] => Array
                                        (
                                            [
                file] => 2608
                                        
                )

                                )

                        )


                Kommentar

                Lädt...
                X