Text Input mit File Upload in Datei Speichern

T

Trax3r

Hallo !

Hoffe das ich hier richtig bin ^^

Also ich hab nach einer Moeglichkeit gesucht 5 Files hochzuladen und die Pfade in einer XML zu speichern.

Was ich aus Erfolgreich geschafft habe dank tutorials.de Suche

Allerdings moechte ich das zu den Bild ein Link in der XML gespeichert wird.

Ist das so Technisch moeglich ? Meine php Kenntnisse sind begrenzt

Vllt. kann mir hier ja jemand helfen oder ein Link geben :)

HTML:
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="file" name="userfile[]"/><input type="text" name="usertext[]"><br /> 
<input type="file" name="userfile[]"/><input type="text" name="usertext[]"><br /> 
<input type="file" name="userfile[]"/><input type="text" name="usertext[]"><br /> 
<input type="file" name="userfile[]"/><input type="text" name="usertext[]"><br /> 
<input type="file" name="userfile[]"/><input type="text" name="usertext[]"><br /> 
<input type="submit" value="submit"> 
</form>

PHP:
<?php

if (isset($_POST)) {

  $file = 'images_en.xml'; 

// -- XML speichern
  $xml = xmlwriter_open_memory();

  xmlwriter_start_element ($xml,"Gallery");
    xmlwriter_write_attribute ($xml,"timer", "8");
    xmlwriter_write_attribute ($xml,"order", "sequential");
    xmlwriter_write_attribute ($xml,"fadetime", "2");
    xmlwriter_write_attribute ($xml,"looping", "yes");
    xmlwriter_write_attribute ($xml,"xpos", "0");
    xmlwriter_write_attribute ($xml,"ypos", "0");
  
    //erlaubte Dateien, kann erweitert werden
    $erlaubt = array ("image/gif", "image/jpg", "image/jpeg", "image/png");
    //Maximale Groesse in kb
    $maxsize = 2048;
    //Pfad wo die Dateien gelagert werden sollen.
    $image_path = "images/eng/";
      
    //Schleife, um alle Dateien zu holen
    for ($i = 0; $i < count($_FILES['userfile']['name']); $i++)
    {
        //Überhaupt Datei da?
        if ($_FILES['userfile']['error'][$i] == 4)
            continue;
        
        //Upload nur teilweise?
        if ($_FILES['userfile']['error'][$i] == 3)
        {
            echo "Die Datei \'".$_FILES['userfile']['name'][$i]."\' wurde nur teilweise hochgeladen<br/>";
            continue;
        }
        
        //Mimetyp erlaubt?
        if (!in_array($_FILES['userfile']['type'][$i],$erlaubt))
        {
            echo "Die Datei \'".$_FILES['userfile']['name'][$i]."\' ist nicht für den Upload erlaubt<br/>";
            continue;
        }
        
        //Zu gross?
        if ($_FILES['userfile']['size'][$i] > $maxsize*1024)
        {        
            echo "Die Datei \'".$_FILES['userfile']['name'][$i]."\' ist zu groß<br/>";
            continue;
        }
        
        //Endung mit auslesen
           $path_parts = pathinfo($_FILES['userfile']['name'][$i]);
           
           //Dateinamen generieren
           $filename = "bild".$i."_".time().".".$path_parts['extension'];
           
           //So, nun verschieben
        move_uploaded_file  ( $_FILES['userfile']['tmp_name'][$i]  , $image_path.$filename );

        xmlwriter_start_element ($xml,"image");
          xmlwriter_write_attribute ($xml,"path", "slideshow/$image_path$filename");
          xmlwriter_write_attribute ($xml,"link", "#");
        xmlwriter_end_element ($xml);      
          
        //Fertig;
        echo "Die Datei \'".$_FILES['userfile']['name'][$i]."\' wurde erfolgreich hochgeladen<br/>";
        
    }
    
xmlwriter_end_element ($xml);

$xml_data=xmlwriter_output_memory($xml);

file_put_contents($file, $xml_data);

echo "<br/><br/>Die Datei $file wurde erfolgreich Geschrieben.<br/>";

}  
?>

Ich glaube das muesste ich mit der einen Schleife verbinden oder ?

-- Trax3r
 
Im Prinzip tust du genau das schon an der folgenden Stelle:
PHP:
xmlwriter_write_attribute ($xml,"path", "slideshow/$image_path$filename");
Diese Zeile kannst du kopieren und anpassen.

Wie der Pfad zu dem Bild lauten muss, kannst allerdings nur du wissen. ;)

*edit*
Achso, "path" musst du dann natürlich in z. B. "link" ändern, da ein Attributname in einer Node nur einmal vergeben werden darf.

*edit2*
Beim zweiten Lesen habe ich das Gefühl, irgendetwas an deinem Problem nicht verstanden zu haben. :confused:
Weil eine Schleife hast du schon, das Attribute namens "link" setzt du auch, nur eben mit der Wert "#", und nicht mit dem Link zu dem jeweiligen Bild.
 
Zuletzt bearbeitet:
Sorry hab nicht deutlich genug geschrieben bin schon seit Std. daran und das macht ein schon confuse ^^"

Die Schleife ist rein nur fuer den Upload Hab ich hier aus dem Forum und hab dann noch gegoogelt das es das jetzt in der XML speichert.

Ich moechte das der Link passend zum Bild in der XML steht hab aber keine ahnung wie.

Ich denkmal das zur der Schleife von userfile etwas hinzugefuegt werden muss damit ich $usertext ausgeben kann.

Weil eine Schleife hast du schon, das Attribute namens "link" setzt du auch, nur eben mit der Wert "#", und nicht mit dem Link zu dem jeweiligen Bild.

# mein lieblings Platzhalter :D steht drinne fuern test der XML Ausgabe
 
Was für einen Link meinst du denn? Dieser Link soll dann am Ende dort stehen, wo jetzt der Platzhalter ist?

Edit:
Oder meinst du mit Link den Text zum draufklicken, damit das Bild erscheint? Sprich du wählst beim Uploadfeld ein Bild mit einer Katze aus,dann schreibst in das zugehörige Textfeld "Meine Katze" und dieser Text soll dann bei Link stehen?

Wenn ja, sollte es ein einfaches
PHP:
xmlwriter_write_attribute ($xml,"link", $_POST['usertext'][$i]);
tun. Selbstverständlich sollte man das noch etwas absichern. Nicht, dass man damit später das XML-File ruinieren kann. Habe noch nie mit dieser XML-Erweiterung gearbeitet und weiß daher nicht, ob es intern sich um gewisse Zeichen kümmert.
 
Zuletzt bearbeitet:
Zurück