Ergebnis 1 bis 7 von 7

Thema: [Gelöst] Textdatei nach Upload bearbeiten?

  1. #1
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard [Gelöst] Textdatei nach Upload bearbeiten?

    Hi zusammen,

    gibt es eine Möglichkeit (evtl. mittels Hook), Textdateien (im konkreten Fall eine csv) mittels PHP-Skript automatisch nach dem Upload über die Dateiverwaltung zu bearbeiten?

    In meinem Fall:

    Dateiverwaltung -> csv-Datei hochladen -> erste Zeile automatisch anpassen

    So wie ich das verstehe, ist der postUpload Hook nur geeignet, wenn man am Dateinamen rumbasteln möchte o.ä.

    Für einen Tipp wäre ich dankbar.
    Geändert von d23 (18.08.2017 um 11:55 Uhr)

  2. #2
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.943

    Standard

    Wieso sollte der Hook nur für Dateinamensänderungen geeignet sein?

    Wenn Du (via Parameter des postUpload-Hooks) den Dateinamen -- und damit Zugriff auf die Datei -- hast, kannst Du doch mit der Datei machen, was auch immer Du für nötig hältst.
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.614
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du bekommst nur ein Array mit den Dateinamen übergeben, machen kannst Du damit, was Du willst.
    Da kannst auch über den Dateinamen die Datei öffnen und verändern.

    Es kann sein, dass Du danach die Änderungen noch synchronisieren solltest. Dafür gibt es aber sicherlich auch einen Programmaufruf.

  4. #4
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Oha... wieder nicht mitgedacht. Werde den Ansatz mal versuchen. Danke euch beiden.

  5. #5
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Für die Nachwelt:

    PHP-Code:
    $GLOBALS['TL_HOOKS']['postUpload'][] = array('UploadCsvClass''csvPostUpload'); 
    PHP-Code:
    <?php

      
    class UploadCsvClass extends Backend
       
    {
        public function 
    csvPostUpload($arrFiles)
        {
          foreach(
    $arrFiles as $filename) {
            
    $fileObj = new File($filename);
            
    $fileContent $fileObj->getContentAsArray();

            
    // change first line of csv content, encode in utf-8, add linebreaks and write to file
            
    $fileContent[0] = 'value0;value2;value3;value4';
            
    $fileObj->write(utf8_encode(implode("\n"$fileContent)));
          }
          
    $fileObj->close();
      }
    }

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Da fehlen aber bestimmt noch einige Bedingungen, oder?
    PHP-Code:
    foreach($arrFiles as $filename) {
      if([
    Bedingung]) // e.g. not suffix .csv
      
    {
        continue;
      } 
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Zitat Zitat von Andreas Beitrag anzeigen
    Da fehlen aber bestimmt noch einige Bedingungen, oder?
    PHP-Code:
    foreach($arrFiles as $filename) {
      if([
    Bedingung]) // e.g. not suffix .csv
      
    {
        continue;
      } 
    Ja klar, den ganzen Kram habe ich der Einfachheit wegen weggelassen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

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