lapeno: Download Link

Ich schätze mal einige oder alle werden rapidshare kennen.....so ich will so ein ähnliches prinzip wie die herstellen von upload und download nur eben etwas "simpler", mein upload skript ist auch soweit fertig also uploaden kann man undso weiter...jetzt will ich aus der geuploadeten datei einen link generieren um den benutzer es möglich zu machen das er die datei runterladen kann. Das heißt es wird eine Seite geben mit Download wo dann alle auf dem Server liegenden Dateien zum runterladen bereitgestellt wird. Die Seite wird nix Illegales Beinhalten, darauf ist auch schon geachtet im skript =D. Gewöhnlich kann man einige Dokumente so runterladen wie Office dokumente, aber ich würde gerne auch zum beispiel bilder runterladbar machen wollen, weil die werden ja im browser nur angezeigt.

Gruß Lapeno

  1. hi,

    Gewöhnlich kann man einige Dokumente so runterladen wie Office dokumente, aber ich würde gerne auch zum beispiel bilder runterladbar machen wollen, weil die werden ja im browser nur angezeigt.

    Dann ZIP die Dateien einfach und stopf diese in ein Verzeichnis, lese dieses Verzeichnis aus und generiere aus jedem ZIP-Archiv den dazugehörigen Link.
    Einfach ausgedrückt.
    Aber, ohne zu wissen, was du bisher gemacht und versucht hast und wie das ganze mittlerweile aussieht bleibt es eher ein Ratespiel.

    Was wird denn Hochgeladen? Was darf alles Hochgeladen werden? Rapidshare z. B. erlaubt es nur, ZIP-Archive Hochzuladen, dass ist schon der beste Ansatz, dein vorhaben zu realisieren.

    mfg

    --
    echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
    array(2) {
      ["SELFCODE"]=>
      string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
      ["Meaningful"]=>
      string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
    }
    1. Hochgeladen dürfen halt zum Beispiel MS Office Dokumente, TXT Dateien, Bilder (zum Beispiel Screens), PDF Dateien, halt Dokumente, naja ich hatte mich mal schlau gemacht auf ner webseite, aber hast recht wäre vielleicht besser einfach zip dateien hochzuladen wie bei rapidshare und die dann zum Download anbieten. aber dann weiß man natürlich nicht was für inhalte die ZIP dateien haben ohne diese zu öffnen und rein zuschauen. Naja es können auch Bilddateien hochgeladen werden, beispielsweise Screenshots aber nur im jpeg format :)

      1. [...] aber dann weiß man natürlich nicht was für inhalte die ZIP dateien haben ohne diese zu öffnen und rein zuschauen. Naja es können auch Bilddateien hochgeladen werden, beispielsweise Screenshots aber nur im jpeg format :)

        Und was, wenn ich eine Filmsequenz nehme, und aus dem Filename 'xyz.avi' ein 'xyz.jpg' mache, dann ist doch dein Schutz wirkungslos.

        Was galubst du wieviele Dateien mit der Endung *.html es unter Rapidshare zum Download gibt, die aber in Wirklichkeit *rar Files sind, mit "illegalem" Inhalt. Per Dateinamen kannst du es auch nicht ausschließen, eingetlich kannst du es garnicht ausschließen.

        Auch Bild. -und Textmaterial kann illegal sein ....

        1. »» [...] aber dann weiß man natürlich nicht was für inhalte die ZIP dateien haben ohne diese zu öffnen und rein zuschauen. Naja es können auch Bilddateien hochgeladen werden, beispielsweise Screenshots aber nur im jpeg format :)
          Und was, wenn ich eine Filmsequenz nehme, und aus dem Filename 'xyz.avi' ein 'xyz.jpg' mache, dann ist doch dein Schutz wirkungslos.

          Was galubst du wieviele Dateien mit der Endung *.html es unter Rapidshare zum Download gibt, die aber in Wirklichkeit *rar Files sind, mit "illegalem" Inhalt. Per Dateinamen kannst du es auch nicht ausschließen, eingetlich kannst du es garnicht ausschließen.

          Auch Bild. -und Textmaterial kann illegal sein ....

          naja ich mein wenn du nen 700mb bild drin haben willst bitte :D nur weil man die endung ändert heißt es noch lange nicht das die datei größe sich ebenfalls ändern lässt....is schon klar das text dateien "illegale" inhalte haben können....aber nur was für inhalte? nen link der auf ne xxx seite verwiesen wird? fein :D solls eben so sein nur ich krieg dann von ner lehrerin bescheid und zack die bohne ist die datei down vom server :)

      2. hi,

        aber hast recht wäre vielleicht besser einfach zip dateien hochzuladen wie bei rapidshare und die dann zum Download anbieten.

        Gerade bei Download-Geschichten wurden die User auf ZIP-Archive hin getrimmt, somit würdest du deinen nutzern nur einen gefallen tun.

        aber dann weiß man natürlich nicht was für inhalte die ZIP dateien haben ohne diese zu öffnen und rein zuschauen.

        Dann schreibste halt Überraschungs-Paket drüber ;)

        Naja es können auch Bilddateien hochgeladen werden, beispielsweise Screenshots aber nur im jpeg format :)

        Und wenn ein User nun 10 Screenshots hochladen möchte und ein anderer Nutzer diese runter laden möchte? Ohne ende Traffic, wo keiner sein müsste für dich und umständlich für den user, alle Bilder einzeln zu speichern. Das ZIPpen würde dir nahezu nur Vorteile bieten.

        mfg

        --
        echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
        array(2) {
          ["SELFCODE"]=>
          string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
          ["Meaningful"]=>
          string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
        }
        1. Hallo

          »» Naja es können auch Bilddateien hochgeladen werden, beispielsweise Screenshots aber nur im jpeg format :)

          Und wenn ein User nun 10 Screenshots hochladen möchte und ein anderer Nutzer diese runter laden möchte? Ohne ende Traffic, wo keiner sein müsste für dich und umständlich für den user, alle Bilder einzeln zu speichern. Das ZIPpen würde dir nahezu nur Vorteile bieten.

          Genau an dieser Stelle greift das Argument "Ohne ende Traffic" nicht.Die Komprimierungsrate beim zippen von JPEG-Dateien tendiert, je nach Komprimierungsrate des JPEGs selbst, gegen NULL. Ob beim Download der 10 JPEG-Dateien oder eines oder mehrerer ZIPs mit eben diesen Bildern, du wirst _in_etwa_ den gleichen Traffic haben.

          Ansonsten sind, abseits der Inhaltskontrolle, komprimierte Dateien natürlich von Vorteil. Ob sie nun als ZIP oder JAR, RAR, TAR (ob man so das ganze Alphabet durchgehen könnte?) gespeichert und ausgeliefert werden soll(t)en, liegt an der Zielgruppe.

          Tschö, Auge

          --
          Die deutschen Interessen werden am Liechtenstein verteidigt.
          Veranstaltungsdatenbank Vdb 0.3
          1. Reden wir jetzt von der Komprimierungsrate oder wollen wir wieder zum download "skript" kommen? wie, wer und was der jenige hochladen kann ist schonmal festgelegt und hat jetzt keine rolle in dem thread sonst würde es ja "UPLOAD & DOWNLOAD LINK" heißen und nicht nur "Download Link"...

            1. hi,

              Reden wir jetzt von der Komprimierungsrate oder wollen wir wieder zum download "skript" kommen? wie, wer und was der jenige hochladen kann ist schonmal festgelegt und hat jetzt keine rolle in dem thread sonst würde es ja "UPLOAD & DOWNLOAD LINK" heißen und nicht nur "Download Link"...

              Diese frage hatte ich dir schon beantwortet; lege alle hochgeladenen Dateien in ein Verzeichnis, lies es aus und verlink die einzelnen Ressourcen.
              Da hier keiner weiss, wie Fit du in PHP bist, kann man auch nichts weiter dazu sagen.

              Beispielsweise wäre eine der Fragen, die ich mir stelle, ob alle Ressourcen, die hochgeladen werden einfach auf einer Seite verlinkt werden sollen, oder ob ein Weiterblättern-Menu erzeugt werden soll; ob es Eventuell eine unterteilung zu Kategorien oder Themen gibt, für die dann Links erzeugt werden sollen.

              Wobei ich finde, dass eine tiefer gehende Diskussion in dieses Thema dir nur Vorteile bringen würde, dass mal so nebenbei.

              mfg

              --
              echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
              array(2) {
                ["SELFCODE"]=>
                string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
                ["Meaningful"]=>
                string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
              }
              1. Hello,

                Wobei ich finde, dass eine tiefer gehende Diskussion in dieses Thema dir nur Vorteile bringen würde, dass mal so nebenbei.

                Das denke ich auch.
                So einen Thread hatten wir doch neulich erst.

                Bei Uploads: Keine Publkation ohne vorherige Sichtung!
                (oder alternativ ständige Sichtung, wie sie hier im Forum mit viel Engagement stattfindet.)

                Wenn er etwas ganz simples haben will, dann richtet er sich einen Samba-Server mit SSH ein, und kann hoch- und runterladen wie er lustig ist. Außerdem lassen sich so komplexe Zugriffsrechte vergeben und eine Kontrolle einrichten.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
          2. hi,

            Genau an dieser Stelle greift das Argument "Ohne ende Traffic" nicht.Die Komprimierungsrate beim zippen von JPEG-Dateien tendiert, je nach Komprimierungsrate des JPEGs selbst, gegen NULL. Ob beim Download der 10 JPEG-Dateien oder eines oder mehrerer ZIPs mit eben diesen Bildern, du wirst _in_etwa_ den gleichen Traffic haben.

            Mit ohne ende traffic habe ich mich ein wenig falsch ausgedrückt, ich bezog mich darauf, dass bei 10 Bildern jedes einzeln angefordert werden muss, wohin gegen, wenn alles in einem Archiv untergebracht ist, nur eine Datei angefordert wird.

            Ansonsten sind, abseits der Inhaltskontrolle, komprimierte Dateien natürlich von Vorteil. Ob sie nun als ZIP oder JAR, RAR, TAR (ob man so das ganze Alphabet durchgehen könnte?) gespeichert und ausgeliefert werden soll(t)en, liegt an der Zielgruppe.

            Das stimmt, wobei ich Persönlich auf Win-Rar setzen würde, ist wohl das verbreitetste.

            mfg

            --
            echo '<pre>'; var_dump($Malcolm_Beck`s); echo '</pre>';
            array(2) {
              ["SELFCODE"]=>
              string(74) "ie:( fl:) br:> va:? ls:? fo:) rl:| n4:# ss:{ de:? js:} ch:? sh:( mo:? zu:("
              ["Meaningful"]=>
              string(?) "Der Sinn des Lebens ist deinem Leben einen Sinn zu geben"
            }
  2. Stichwort readfile() und attachment im header setzen.

    Findet man im Deteil, wenn man z.B. nach "Datei zum download anbieten" sucht.

    1. also wäre das beispielsweise so?:

      readfile("test.txt");
      header("Content-Disposition: attachment; filename=test.txt");
      <a href="test.txt">Text Datei runterladen</a>

      ??

      1. also wäre das beispielsweise so?:

        readfile("test.txt");
        header("Content-Disposition: attachment; filename=test.txt");
        <a href="test.txt">Text Datei runterladen</a>

        ??

        Nein, wie kommst Du drauf?

        Hast Du nachgeschlagen, was readfile macht bzw. was es zurückgibt?
        Hast Du nachgeschlagen, was header macht bzw. was vor dem Aufruf von header auf keinen Fall passieren darf?
        Hast Du weitere Quellen zu "Datei zum download anbieten" kontaktiert und bist Hinweisen auf mögliche Probleme und deren Lösungen nachgegangen?

        1. readfile wie die funktion ja schon sagt liest den kompletten inhalt der datei und mit echo lässt man sich das eben ausgeben ;)

          hm das mit header....ka das vorher NICHT damit passieren darf........ein weiterer grund nachzufragen ;)

          und joa hab ich.......und ne da gabs kaum lösungen die für mich von belang waren...

          1. readfile wie die funktion ja schon sagt liest den kompletten inhalt der datei und mit echo lässt man sich das eben ausgeben ;)

            readfile schreibt schon in den Ausgabepuffer, genau wie echo.

            hm das mit header....ka das vorher NICHT damit passieren darf........ein weiterer grund nachzufragen ;)

            Deine Antwort lautet also "Nein" und Du holst das jetzt nach, hoffe ich. Ich warte dann mal auf die Nachfrage.

            1. nya sinnlos dann irgentwie vorher readfile zu haben wenn man danach nen header einbaut der eine datei zum download anbietet:) entweder das oder das eine..schätze ich mal..oder..

              1. Hello,

                nya sinnlos dann irgentwie vorher readfile zu haben wenn man danach nen header einbaut der eine datei zum download anbietet:) entweder das oder das eine..schätze ich mal..oder..

                nicht in jedem Fall.

                Stell Dir das mal so vor:

                Der Webserver übergibt das gesamte Script an den PHP-Parser, weil er über seine Konfiguration dazu veranlasst wurde. Normalerweise ist das die Endung *.php, die ihn dazu veranlasst.

                Jetzt fängt er an zu lesen und alles, was ihn nicht weiter für seine Auswertung interessiert, füllt er sofort in seinen großes Ausgangsrohr, schön soertiert, der Reihe nach in der er das gelsesen hat.

                Erst, wenn er auf einen PHP-Bereich stößt, der im Allgemeinen duch <?php gestartet wird, fängt er an zu schwitzen. Nun wertet er die Literale als Statements aus und gibt füllt nur noch in das Ausganmgsrohr, was durch echo, print, readfile() und sonstige Ausgabeanweisungen erzeugt wurde. Dir übrigen Ergebnisse behält er vielleicht in Variablen oder schmeißt sie gleich weg, weil der Programmierer ihn sinnlos (aber nicth umsonst!) hat arbeiten lassen.

                Am Scriptende schmeißt er dann auch die Variablen weg.

                Bei Normaleinstellung des Parsers wird alles, was sich im Rohr befindet, auch sofort an den Webserver zurückgeleitet, der es dann  nach seinem Gutdünken zum Client schickt.

                Fängt man aber nun so ein Script sofort mit einem <?php an, dann fängt auch der Parser sofort an zu schwitzen. Man kann ihm dann gleich als erstes die Anweisung geben, das Rohr doch an der Seite zum Webserver zu verschließen, also zu verhindern, nichts direkt auszugeben. Das machst Du mit

                ob_start()     http://de2.php.net/manual/en/function.ob-start.php

                Nun kann man auch mit echo, print, readfile un Consorten fleißig Ausgaben produzieren, ohne diese gleich an den Websewrver weiterleiten zu lassen. Wenn dann noch ein Header benötigt ist, kann der immer noch vorne vor dem Ausgaberohr davormontiert werden vom Parser, auch ohne direkt beim Webserver zu landen.

                Wenn dann am Ende des Scriptes die gesamte Ausgabe auf einmal ausgelöst wird, sitzen die Header in der passenden Sortierung an der richtigen Stelle und die Daten folgen erst anschließend, so wie es der Client erwartet.

                Aber schau Dir sinnvollerweise auch nochmal Funktionen, wie

                file_get_contents()  http://de2.php.net/manual/en/function.file-get-contents.php
                und

                fread()              http://de2.php.net/manual/en/function.fread.php

                an oder sogar die Stream-Funktionen

                http://de2.php.net/manual/en/streamwrapper.stream-read.php
                   http://de2.php.net/manual/en/book.stream.php

                Mit diesen kannst Du den Dateiinhalt erst in eine Variable odre Eigenschaft befördern, dort aufbewahren und manipulieren und selber entscheiden, wann sie in den Ausgabestrom (Dein "Rohr") überführt werden sollen.

                Liebe Grüße aus dem schönen Oberharz

                Tom vom Berg

                --
                Nur selber lernen macht schlau
                http://bergpost.annerschbarrich.de
                1. Hm Ja gut alles schön und gut....aber irgentwie schweifen wir jetzt komplett vom Thema ab...jetz gehts auf einmal um fread, fileread, stream etc =) aber irgentwie hilft mir das auch nicht weiter mit meinem problem das ich nen download link erstellen wollt von abschweifenden downloads.....ergo nen download link von nem jpeg bild oder einer txt datei =)

                  naja ich kann ja nachher meine gedanken mal rein schreiben lassen wie ich mir das vorgestellt hatte wie es etwa vll vom skript her sein könnte

                  1. na schön dann ist es eben nicht egal wohin der kommt.. dennoch würd ich gerne auf das eigentliche problem zureden kommen auch wenn header was damit zutun hat..aber nicht wirklich readfile.. wie es schon vorher mal erwähnt wurde..

                    1. na schön dann ist es eben nicht egal wohin der kommt.. dennoch würd ich gerne auf das eigentliche problem zureden kommen auch wenn header was damit zutun hat..aber nicht wirklich readfile.. wie es schon vorher mal erwähnt wurde..

                      Wozu willst du ein header ausgeben, wenn du die Daten anschließend nicht hinterhersendest? Und genau das macht readfile.

              2. nya sinnlos dann irgentwie vorher readfile zu haben wenn man danach nen header einbaut der eine datei zum download anbietet:) entweder das oder das eine..schätze ich mal..oder..

                Na dann mach es doch einfach umgekehrt. Du bist doch nicht etwa davon ausgegangen, daß die Reihenfolge der Stichworte der zwingenden Reihenfolge im Code entspricht?

                1. Na dann mach es doch einfach umgekehrt. Du bist doch nicht etwa davon ausgegangen, daß die Reihenfolge der Stichworte der zwingenden Reihenfolge im Code entspricht?

                  laut dem text auf php.net ist es egal wo der header steht....ob am anfang oder am ende....

                  1. Hello,

                    Na dann mach es doch einfach umgekehrt. Du bist doch nicht etwa davon ausgegangen, daß die Reihenfolge der Stichworte der zwingenden Reihenfolge im Code entspricht?

                    laut dem text auf php.net ist es egal wo der header steht....ob am anfang oder am ende....

                    Es ist nicht egal, wo er steht, sondern wo und wann er in Deinem Script gesetzt wird. Das gilt aber nur solange DU ncoch keine Rückgaben an den Webserver veranlasst hast. Deshalb sind wir abgewofen, oder sagt man abgewiffen? *gg*

                    Liebe Grüße aus dem schönen Oberharz

                    Tom vom Berg

                    --
                    Nur selber lernen macht schlau
                    http://bergpost.annerschbarrich.de
  3. Mahlzeit,

    am Besten funktioniert sowas, wenn das Download über ein Script läuft, hier kannst Du nämlich dafür sorgen, dass
    1. der richtige Content-Type ausgegeben,
    2. die Datei mit dem richigen Namen zum Speichern/Unter angeboten wird.

    Nennen wir das Script "download.cgi" und den Parameter "download". Die Datei, die zum Download angeboten werden soll, heißt bspw. "xxl.pm" und ist eine reine Textdatei.

    Dein Link könnte so aussehen:
    /download.cgi?download=xxl.pm

    Das Script download.cgi gibt den dazugehörigen Content-Type aus auf STDOUT:
    "Content-type: text/plain"
    gefolgt von einer Leerzeile und dann den eigentlichen Content der Datei xxl.pm.

    Damit der Browser nun auch noch den richtigen Namen kriegt, ändere den Link wie folgt:
    /download.cgi/xxl.pm?download=xxl.pm

    Womit die meisten Browser eine Datei namens "xxl.pm" zum Speichern/Unter anbieten.

    Hotte

    --
    Eine Nudel die zappelt ist ein Wurm.