+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Fileupload-Funktion in Komponente bringen - Wie geht das?

  1. #1
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Fileupload-Funktion in Komponente bringen - Wie geht das?

    Hallo Gemeinde,

    ich arbeite derzeit an einer dringend benötigten Komponente. Mit dieser will ich Projekte von unseren Komillitonen in die Datenbank schreiben. Die Metainfos aufzunehmen und in die DB zu schreiben geht. Ich benötige aber dringend eine Möglichkeit, ein Vorschaubild mit einzubinden. Wenn man dann nach Projekten sucht, sollen das Vorschaubild und 3 Zeilen Kurzinfo ausgegeben werden.

    Ich habe in die admin.projects.html.php schon ein Formular gebracht, in welchem auch ein part <input type="file" name="project_thumb" ... /> eingebunden ist. Wenn ich dann ein Bild aussuche, wird der Name+Extension davon auch genommen und in die DB geschrieben, aber ich finde keine Möglichkeit, den gesamten Pfad in eine andere DB-Zeile zu schreiben, weil ich nicht weiß, wie ich den rausbekommen kann. Auch gelingt es mir nicht, das Bild richtig hochzuladen und in einen eigens dafür vorgesehenen Ordner zu legen.

    Ich weiß, dass es schon einige Extensions zur Dateiverwaltung mit Uploadfunktion gibt, aber ich benötige diese Funktion ja in meiner eigenen Komponenten.

    Könnt ihr mir weiterhelfen und sagen, wie ich diese Funktion einbinde, sodass mit Klick auf "Save" oder "Apply" das Bild nach Joomla hochgeladen und der Pfad sowie der Bildname in die DB geschrieben werden?

    Ich kriegs einfach nicht hin.

    LG,

    Clubnite

  2. #2
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    oft wird vergessen, dass das formular noch den enctype
    Code:
    enctype="multipart/form-data"
    haben muss...
    also
    <form action bla bla enctype="multipart/form-data">

    anschliessend kannst du die datei nach abschicken des formulars mit
    PHP-Code:
    $file JRequest::getVar('name_der_file_box'null'files''array'); 
    aufrufen und weiter verarbeiten.

    http://www.joomlaportal.de/komponent...ge-upload.html
    http://www.joomlaportal.de/komponent...er-upload.html

    die upload klasse ( http://www.joomlaportal.de/komponent...tml#post729251 ) nutze ich auch und ist wunderbar.
    ansonsten in die joomla JFile api einarbeiten

  3. #3
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo JoomlaHatesMe,

    danke für deine Antwort. Ich werde mir die links mal anschauen und mich wieder melden, wenn Probleme auftauchen.

    Eine frage hätte ich noch gleich:
    PHP-Code:
    $file JRequest::getVar('name_der_file_box'null'files''array'); 
    wieso file_box?

    Gruß, Clubnite

  4. #4
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    ich meine dieses input ding type="file"...

    HTML-Code:
    <input name="name_der_file_box" type="file" size="30" accept="image/*" />

  5. #5
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    ok, das hat jetzt funktioniert.

    Ich bekomme die Bilder nur nicht angezeigt.

    Ich speichere die Pfade so:
    Code:
    JString::str_ireplace( '\', '//', JPATH_ROOT . DS . 'images . DS . 'ordner' . DS . 'projekt' . DS ) );
    in der Datenbank steht aber so ein Pfad:
    Code:
    C:/Programme/Joomla/htdocs/meinjoomla/....
    Sollte da aber nicht ein Pfad beginnend ab "meinjoomla" stehen? Wenn ich den per Hand rein schreibe, klappt das mit der Bildanzeige, aber über die Joomla-Syntax starte ich immer ab 'C:\' .

    Was läuft da schief?

    Wie kann ich das lösen?

    Clubnite

  6. #6
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    weiß niemand rat?

  7. #7
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    benutz stattdessen JURI::base()

    davon abgesehen brauchst du das sowieso nicht, images/bla/blub reicht vollkommen aus, da joomla eh vom joomlaroot ausgeht und der image ordner sich dadrinne befindet.

  8. #8
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo JoomlaHatesMe,

    danke für deine Antwort. Ich habe es probiert und jetzt geht gleich alles schief. Hier ist meine Anweisung:
    Code:
    if( $imagename != null  )
    {
       $project_folder = "images".DS."mysite".DS."projects".DS.JString::strtolower( JString::str_ireplace( ' ', '_', $row->titel ) );
    
       * check if project folder (the image target) already exists in root/images/mysite */
       if( !JFolder::exists( $project_folder ) )
       {
          /* if not, create and name it the project name */
          JFolder::create( $project_folder );
       }
    
       $img_src_path = $image['tmp_name'];
    
       /* IMPORTANT:   the path must end with the filename - otherwise copying will    fail	!!! */
       $img_dest_path = $project_folder.DS.$imagename;
    
       /*  copy the image to the project folder */
       if( !JFile::upload( $img_src_path, $img_dest_path ) )
       {
          JError::raiseWarning( 100, 'ERROR: Image not uploaded ' . $row->getError() );
          return false;
       }
    
       /* set the image name for storing in database */
       $row->thumbnail = $imagename;
       $row->thumbnail_path = JString::str_ireplace( "\\", "/", $project_folder . DS );
    
    }
    Damit passiert folgendes:

    1. In die Datenbank wird als Pfad geschrieben
    images/mysite/projects/test_test2/
    So ist es gewünscht und das Bild wird in meiner Komponente im Backend auch angezeigt. ABER: Der verwendete Pfad ist laut HTML Quelltext auf einmal
    Code:
    http://localhost/joomla/administrator/images/mysite/projects/test_test2/thumb.jpg
    Wie kann das denn sein? Entsprechend wird der Ordner "images" auch im Verzeichnis "administrator" angelegt und nicht da, wo der Datenbankpfad hinweist. Das entspricht doch aber garnicht meiner Anweisung!?

    2. Im Frontend weise ich an
    Code:
    <img src="<?php echo $this->project->thumbnail_path . $this->project->thumbnail; ?>"
    					     alt="" width="80" height="80"
    					     title="Thumbnail of project <?php echo $this->project->titel; ?>" />
    Das Bild wird NICHT angezeigt. Als Pfad wird hier im HTML Quelltext angezeigt:
    Code:
    http://localhost/joomla/images/mysite/projects/test_test2/thumb.jpg
    Das ist der Pfad, der angewiesen wurde.

    3. mit der Anweisung
    Code:
    $project_folder = JURI::base( "images".DS."mysite".DS."projects".DS.JString::strtolower( JString::str_ireplace( ' ', '_', $row->titel ) ) );
    bekomme ich in die Datenbank als Thumbnail Pfad ganz und gar Blödsinn, nämlich
    Code:
    /joomla/administrator/
    Was läuft denn nun wieder schief?

  9. #9
    War schon öfter hier
    Registriert seit
    24.11.2008
    Beiträge
    117
    Bedankte sich
    8
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Könnte mir denn bitte nochmal jemand helfen? Es ist wirklich ungemein wichtig und dringend...

  10. #10
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    änder mal
    PHP-Code:
    $project_folder "images".DS."mysite".DS."projects".DS.JString::strtolowerJString::str_ireplace' ''_'$row->titel ) ); 
    in
    PHP-Code:
    $project_folder JURI::base() . "images" DS "mysite" DS "projects" DS JString::strtolowerJString::str_ireplace' ''_'$row->titel ) ); 

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein