Erzwungener Bild-Download im Catalog

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • timbec
    Contao-Nutzer
    • 22.09.2009
    • 150

    #1

    Erzwungener Bild-Download im Catalog

    Hallo zusammen,

    ich bin mir nicht ganz sicher ob die Frage hier wirklich richtig ist... also bitte verschieben wenn ich ganz daneben lieg :-)

    Ich habe mir mittels der Catalog Extension eine eigene Bildergalerie mit Übersichtsseite aller Galerien und Galerie-Detailseite (Thumbnails aller in der Galerie enthaltener Bilder) gebaut. In der Detailseite sind die Thumbnails als Lightbox Element auf das große Bild verlinkt. Zusätzlich biete ich die großen Bilder zum direkten Download an.

    Gerade löse ich das einfach über ein _blank - der Benutzer muss das Bild dann per Speichern unter sichern. Unschön.

    Kann ich hierfür irgendwie die Contao eigene ?file= Funktion nutzen? Wenn ich das einfach vor den Pfad (tl_files/content/galerieX/bildx.jpg) setze lande ich immer nur auf der Startseite.

    Danke und Grüße
    Tim
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo timbec,
    da das hier gillt: http://de.selfhtml.org/html/verweise/dateitypen.htm
    reicht es, wenn du den Pfad aus dem Catalog Array nimmst und da ein / an den Anfang stellst (wenn das nicht schon vorhanden ist).

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • timbec
      Contao-Nutzer
      • 22.09.2009
      • 150

      #3
      Hallo Mac KP,

      da der Pfad ja eine Bilddatei ist, zeigt der Browser dieses immer an - das will ich ja vermeiden. Auch mit der Übergabe des Mime types im href Attribut funktioniert das nicht.

      Ich habe es jetzt über eine eigene Download Datei gelöst:

      PHP-Code:
      <?php
      
      $file = $_GET['file'];
      $filesize = filesize($file);
      
      header("Content-Type: image/jpeg");
      header("Content-Disposition: attachment; filename=$file");
      header("Content-Length: $filesize");
      
      readfile($file);
      exit;
      ?>
      Und rufe das im Template wie folgt auf:
      Code:
      <a target="_blank" href="download.php?file=<?php echo $this->entries[0]['data']['media_galerie']['files'][$picCount]; ?>">Foto herunterladen</a>
      Das funktioniert gut - ich hab nur keine Ahnung ob das Sicherheitstechnisch so eine kluge Idee ist?

      Grüße,
      Tim

      Kommentar

      • timbec
        Contao-Nutzer
        • 22.09.2009
        • 150

        #4
        So, ich hab ein wenig getestet... Mit dem Script kann ich sämtliche Dateien (auch config files) herunterladen.
        Eine nicht so kluge Idee ;-)

        Wie kann ich das denn besser absichern, das ich z.b. nur Bildateien zulasse, oder auch nur ein spezielles Verzeichniss zum Start?

        Kommentar

        • xchs
          Administrator
          • 19.06.2009
          • 14682

          #5
          Zitat von timbec Beitrag anzeigen
          Das funktioniert gut - ich hab nur keine Ahnung ob das Sicherheitstechnisch so eine kluge Idee ist?
          Sicherheitstechnisch ist das keine so gute Idee - würde ich meinen. Anstelle von $file = $_GET['file']; solltest Du lieber die Framework-Klassen verwenden:
          PHP-Code:
          $file = $this->Input->get('file'); 
          
          Contao Community Administrator

          [Unterstützungsmöglichkeiten]
          sigpic

          Kommentar

          • xtra
            Maintainer
            • 02.07.2009
            • 2007

            #6
            Wenn du die Bildausgabe deiner Gallerie sowieso selbst steuerst (auswerten des raw Wertes der Bilder) kannst du in der Feldkonfiguration auch einfach den Haken bei "Link als Dateidownload oder Bilder-Lightbox erstellen." setzen und dafyr den bei "Als Bildfeld mit Miniaturansicht erstellen" weglassen.
            Dann macht das alles der Katalog von sich aus fyr dich.
            Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

            Kommentar

            • Bankai
              Contao-Nutzer
              • 01.03.2011
              • 34

              #7
              Hi,
              also das von timbec funktioniert bei mir so weit auch - mehr oder weniger zumindest.

              Ich will das so machen, das ich eine Galerie hab mit Bild-Elementen für die Mediabox und darunter einen Downloadlink.
              Das passt soweit, per template.

              Jetzt zu den Links, die sehen bei wir wie folgt aus:

              <a target="_blank" href="download.php?<?php echo $col->href; ?>">Download</a>

              Das Bild wird heruntergeladen aber es wird als Name der Datei wird die ganze Verzeichnisstruktur genommen.

              und @xchs: Wie genau muss man die php umbauen zur besseren Sicherheit?
              Weil wenn ich nur das eine Umtausch was du geschrieben hast, komme eine Fehlermeldung

              Fatal error: Using $this when not in object context in [...]/download.php on line 3

              Kommentar

              • tom.loeschnigg
                Contao-Nutzer
                • 29.07.2010
                • 104

                #8
                Jemand schon eine Lösung?

                Hat jemand bereits eine Lösung gefunden? Ich stehe auch vor der Anforderung, dass ich im Catalog einen erzwungenen Bild-Download benötige.
                Webworker finden auf meinem Blog hilfreiches zu Angebote, Akquiese, Contao uvm. selected-items.com

                Kommentar

                • Andreas
                  Contao-Urgestein
                  • 19.06.2009
                  • 7709

                  #9
                  Du kannst die Downloadlinks so übers Template aufbereiten. Wenn die Seite mit dem file-Parameter aufgerufen wird sorgt sendFileToBrowser() für den erzwungenen Downloadlink.
                  PHP-Code:
                  
                  if($this->Input->get('file'))
                  {
                    $this->sendFileToBrowser($this->Input->get('file'));
                  }
                  
                  $request = $this->Environment->request;
                  
                  $downloadLink = '<a href="'.$request.'?file=tl_files/meinBild.jpg">download</a>'; 
                  
                  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

                  Kommentar

                  • tom.loeschnigg
                    Contao-Nutzer
                    • 29.07.2010
                    • 104

                    #10
                    Vielen Dank Andreas.

                    Das werde ich gleich versuchen!
                    Webworker finden auf meinem Blog hilfreiches zu Angebote, Akquiese, Contao uvm. selected-items.com

                    Kommentar

                    Lädt...