Ergebnis 1 bis 16 von 16

Thema: Datei verscchieben

  1. #1
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard Datei verscchieben

    Guten Morgen,

    kann man in einem Contao Template Dateien verschieben? Welcher (Contao) Befehl ist dazu notwendig?

    Problem:
    ich erzeuge (erfolgreich) mit php über imagic eine Datei in Contao/System/tmp. Direkt in Contao/files ist das nicht möglich, da kein Schreibrecht (Problematik safe mode hack, Workaround über FTP)
    Jetzt möchte/muss ich die erzeugte Datei in das Files Verzeichnis verschieben, was mit php aus o.g. Gründen nicht funktioniert.

    Contao sollte das ja über den FTP Workaround bereits können aber wie lautet der Befehl dazu?
    Anders gefragt kann ich eine Datei über ein Script in Contao "hochladen" (mit Contao/System/tmp als Quelle, ist mir schon bewusst, dass sich die Datei schon auf dem Server befindet und es kein Client Upload ist!)


    Danke für die Hilfe

    Ciao
    Reiner

  2. #2
    Contao-Fan Avatar von PaddySD
    Registriert seit
    26.10.2016.
    Ort
    Andechs
    Beiträge
    656

    Standard

    Fang doch erstmal mit so wichtigen Dingen wie z.B. Deiner Contao-Version an...

    Grundsätzlich ist das aber so einfach nicht, da Du ja in Contao ein datenbankgestütztes Datei-System hast.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von rwinkler Beitrag anzeigen
    Direkt in Contao/files ist das nicht möglich, da kein Schreibrecht (Problematik safe mode hack, Workaround über FTP)
    Das solltest du beheben.

  4. #4
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    @spooky beheben? wie? Alles auf 0777 setzen? gerade das möchte ich vermeiden!

    @paddySD Version 3.5.19

    Ist mir bewusst, dass ich ein datenbankgestütztes Datei-System habe! Ist aber an der Stelle nicht so wichtig, dass Contao von der Existenz dieser Datei weiß, wichtig wäre nur, dass ich diese an eine bestimmte Stelle schreiben/verschieben kann. (soll ein automatisch erzeugter jpg-Thumbnail einer PDF Datei werden, die ganz normal hochgeladen wurde. Neben die xy.pdf soll halt die xy.jpg)

    Deshalb ja auch meine zweite Frage nach einem evtl. vorhandenen Befehl für einen Upload nach Contao/files mittels php Script.
    Im Zweifel bau ich mir den FTP Upload mit den ganzen Zugangsdaten in PHP nach. Wäre natürlich eleganter (auch aus Sicherheitsgründen) wenn ich auf bestehende Contaofunktionen zurückgreifen könnte.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von rwinkler Beitrag anzeigen
    @spooky beheben? wie? Alles auf 0777 setzen? gerade das möchte ich vermeiden!
    Nein, der Server und/oder die Dateirechte müssen richtig konfiguriert werden.

  6. #6
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Den Safe Mode Hack sollte man durch andere Konfiguration des Servers oder durch PHP als FastCGI vermeiden, sofern möglich. Abgesehen davon kann man sich da sicher bei der Dbafs-Klasse bedienen. @Spooky hat das z.B. vor Jahren an anderer Stelle mal ausgeführt. Siehe https://community.contao.org/de/show...l=1#post333970

  7. #7
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    Hallo tab,

    das mit der Dbafs Klasse hört sich gut an, leider hab ich da noch nicht so recht den Durchblick. Ich bekomme

    Fatal error: Uncaught exception InvalidArgumentException with message Invalid resource /system/tmp/test.jpg thrown in system/modules/core/library/Contao/Dbafs.php on line 63

    wenn ich versuche mit

    \Dbafs::addResource($strFile);

    ein File hinzuzufügen. Muss sich das File bereits unterhalb von /files befinden oder kann es auch in /system/tmp sein?

    Ciao

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Muss sich innerhalb von /files befinden.

  9. #9
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.078
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ja, stimmt leider, da hatte ich gar nicht dran gedacht.

  10. #10
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    Danke für die Antwort(en)

    auch wenn ich das File jetzt über das Script unterhalb von /files erstellen lasse, bekomme ich nach wie vor die o.a. Exception

    Nochmals die Frage:

    gibt es einen Scriptbefehl zum Upload einer (sich dann schon auf dem Server befindlichen) Datei in die Contao Dateiverwaltung?

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Zitat Zitat von rwinkler Beitrag anzeigen
    auch wenn ich das File jetzt über das Script unterhalb von /files erstellen lasse, bekomme ich nach wie vor die o.a. Exception
    Poste die genaue Fehlermeldung.


    Zitat Zitat von rwinkler Beitrag anzeigen
    gibt es einen Scriptbefehl zum Upload einer (sich dann schon auf dem Server befindlichen) Datei in die Contao Dateiverwaltung?
    Ja, \Dbafs::addResource(…);

  12. #12
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    hallo Spooky,

    vielen Dank für die Antwort!
    Die exception war eine Folge eines zusätzlichen / der sich in die Pfadangabe eingeschlichen hat!

    da \Dbafs::addResource(…) keine Dateien bewegt (was ich fälschlicherweise angenommen habe und es damit meiner Meinung nach auch nichts mit einem Upload wie aus meiner Fragestellung zu tun hat) habe ich es jetzt mit

    $Source = new \File($JPG_temp);
    $Source->renameTo($JPG_File);

    geschafft, das in /system/tmp erzeugte Bild in das richtige Verzeichnis unter /files zu verschieben. Es erscheint dann auch sofort in der Dateiverwaltung im Backend.

    Jetzt habe ich aber noch ein anderes Problem:
    Kann man per Script in einem Artikel-Element einen Haken bei "Ein Bild hinzufügen" setzen und die entsprechende Quelldatei bekannt machen?

    Hintergrund:
    Ich würde gerne bei Artikeln die nur eine PDF als Anlage haben und für die ein entsprechend gleichnamiges JPG existiert, dieses als Vorschaubild im Artikel einfügen.

    schon mal Danke für die Ideen die mich in die richtige Richtung schubsen

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Meinst du jetzt News Artikel? Und prinzipiell geht das, ja. Aber ohne deinen Code zu kennen, kann ich dir auch nicht mehr sagen

  14. #14
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard

    ja, News.

    ich stelle mir halt ein Template vor, das die News anzeigt, überprüft ob dort ein pdf als Anhang existiert und wenn ja ein gleichnamiges jpg Bild in das Newselement einfügt. Also nicht nur im Template ausgeben sondern wirklich in der ursprünglichen News die Daten verändern.

    Vorteil:
    Der erste User ruf die News-Seite auf und sieht zwar eine News ohne Bild, nach aktualisieren der Seite oder beim nächsten User wäre dann schon ein Bild dabei, ohne das ich manuell ein Vorschaubild aus einer PDF erstellen und einpflegen muss.


    geht das?

  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Naja, ich verstehe den Workflow nicht ganz. Du hast prinzipiell mehrere Möglichkeiten:


    Implementation als save_callback für tl_news

    In diesem Callback überprüfst du, ob kein Teaser Image angegeben wurde, dafür aber ein PDF als enclosure. Wenn dem so ist, setzt du addImage auf 1 und singleSRC auf die UUID des Bildes, das du anzeigen möchtest.


    Implementation als parseArticles Hook

    Die selbe Überprüfung kannst du dort machen - wird dann halt jedes mal ausgeführt, wenn ein News Element auf der Seite angezeigt wird

  16. #16
    Contao-Nutzer
    Registriert seit
    11.06.2013.
    Beiträge
    42

    Standard gelöst

    Hallo Spooky,

    manchmal verstehe ich den Workflow selbst nicht , oder aber er ändert sich im Lauf der Entwicklung.

    Habs jetzt jedenfalls mit einem postupload Hook gelöst. Das erschien mir am Ende transparenter auch für den Anwender. Workflow ist jetzt einfach PDF hochladen wie gehabt, Prüfung ob in einem Uploadverzeichnis Thumbs erstellt werden sollen oder nicht, wenn ja wird die JPG mit gleichem Namen und Pfad erstellt.

    Am Ende kann dann der Anwender entscheiden ob der das Bild verwendet oder nicht.

    Auf diesen Hook kam ich aber erst durch deine Hinweise und dann intensivere Recherche in dieser Richtung.

    Danke

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
  •