Datei Download aus NICHT Web Bereich

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei Download aus NICHT Web Bereich

    Hallo Gemeinde,

    mein Script arbeitet in Sachen Abfrage ganz gut, ich beko´mme als Array die Ergebnisse zurück und lege sie auf ein ICON sowie einen Link zum Download. Dieser klappt jedoch nicht....ich vermute, weil die zu sendenden Dateien nicht im Web Bereich liegen. Da ich nicht wirklich ein Programmierer bin möchte ich euch um Rat fragen und hoffe auf Hilfe.
    Codesnipsel:
    PHP-Code:
    for ($i=0$i count($myarray); $i++) { 
    PHP-Code:
    echo "<tr><td align=center>$i.</td><td nowrap><a href=\"".$myarray[$i]['path']."\"><img src=\"\icons\download1.gif\" width=\"23\" height=\"30\" border=\"0\" alt=\"Download the File\"></a></td><td 
    PHP-Code:
    nowrap>".$myarray[$i]['file']."</td></tr>\n"; 
    Ich habe versucht, einen HEADER einzusetzen, gelingt mir jedoch nicht, weil ich zwei PHP Abschnitte habe und ich im ersten den HEADER bringen müßte...muss ich daher das ganze Script umbauen ?

    Grüße

    Marcus

  • #2
    Re: Datei Download aus NICHT Web Bereich

    auf dateien in verzeichnissen oberhalb des web-verzeichnisses kann man nicht per browser zugreifen, das ist richtig.
    da hilft auch ein header() nichts, zumindest nicht alleine.

    du müsstest zuerst den header() senden, und anschliessend die daten aus der datei die heruntergeladen werden soll mit readfile() hinterherschicken.

    Ich habe versucht, einen HEADER einzusetzen, gelingt mir jedoch nicht, weil ich zwei PHP Abschnitte habe und ich im ersten den HEADER bringen müßte...muss ich daher das ganze Script umbauen ?
    den header kannst du überall in deinem php-script senden, sofern du vorher noch keinerlei html-ausgabe erzeugt hast.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      per ip des webspaces kann man auf den bereich unter dem heimverzeichnis zugreifen. allerdings ist das eine dumme lösung wenn man seine dateien durch fremde zugriffe ausserhalb der seite schützen will

      Kommentar


      • #4
        Stehe nun wirklich auf dem Schlauch

        Also: Ich bekomme die Header Info nicht in das Script. Ich habe gelesen, das ich die Header Info einfügen muß BEVOR die erste HTML Ausgabe erfolgt. Deshalb hatte ich es zunächst in der Zeile 56 versucht, doch klappt nicht. Ich rufe das folgende Script aus einer Netobjects Fusion Seite auf, auf der ein Formular steht und die Daten entgegen nimmt. Dieses wiederum springt dann das PHP Script an. Kann mir einer sagen, an welcher Stelle der Header rein muß ?
        BTW: PHP4, MySQL 4 & Apache 2 laufen unter Win 2 K bei mir im Wohnzimmer....
        Komplettes Script:
        PHP-Code:
        <? 
        /******************************************** 
        * nas_mysql_result -- connect to mysql then load query result 
        *                     into a two dimensional array. 
        * ----- 
        * Author: Anton Suryawan, copied & modified by Marcus
        * ----- 
        * Description: 
        *   array nas_mysql_result 
        *     (string $dbhost, $dbuserlogin, $dbpassword, $dbname, $dbsql, $rstype) 
        */ 
        function nas_mysql_result($dbhost,$dbuserlogin,$dbpassword,$dbname,$dbsql,$rstype) { 
          $dbconn = mysql_connect($dbhost,$dbuserlogin,$dbpassword) or die("Server 
        Unavailable"); 
          mysql_select_db($dbname,$dbconn) or die("Database Unavailable"); 
          $result = mysql_query($dbsql) or die("Query Unavailable"); 

          //-- initial value -- 
          $iRows = 0; 
          $iCols = 0; 

          $iRows = mysql_num_rows($result); 
          $iCols = mysql_num_fields($result); 
          settype($arrContents,"array"); 

          switch ($rstype) { 
            case "byindex": 
              for($row=0; $row<$iRows; $row++){ 
                $rs = mysql_fetch_row($result); 
                for($col=0; $col<$iCols; $col++){ 
                  $arrContents[$row][$col] = $rs[$col]; 
                }; 
              }; 
              return $arrContents; 
              break; 
            case "byname": 
              for($row=0; $row<$iRows; $row++){ 
                $rs = mysql_fetch_row($result); 
                for($col=0; $col<$iCols; $col++){ 
                  $arrContents[$row][mysql_field_name($result,$col)] = $rs[$col]; 
                }; 
              }; 
              return $arrContents; 
              break; 
          }; 

          mysql_free_result($result); 
          mysql_close($dbconn); 
        }; 
        ?>

        <!-- 
        Example... 
        Change the appropriate values with your own. 
        --> 

        <html> 
        <head><title>SQL Database Search: Your Result's given by MABU :-)</title></head>
        <body> 
        <table border=1 cellpadding=0 cellspacing=0> 
        <tr><th>Nr</th><th>Link</th><th>FileName</th></tr>
        <? 
        $dbhost = "localhost"; 
        $dbuserlogin = "marcus"; 
        $dbpassword = ""; 
        $dbname = "music"; 

        switch ($auswahl) 

        case "Interpret" : $dbsql="SELECT * FROM mp3 WHERE file like '$suchen%'"; 
        break; 
        case "Titel" : $dbsql="SELECT * FROM mp3 WHERE file like '%$suchen%'"; 
        break;




        //-- by field name -- 
        $myarray = nas_mysql_result 
        ($dbhost,$dbuserlogin,$dbpassword,$dbname,$dbsql,"byname"); 


        for ($i=0; $i < count($myarray); $i++) { 
          echo "<tr><td align=center>$i.</td><td nowrap><a href=\"".$myarray[$i]['path']."\"><img src=\"\icons\download1.gif\" width=\"23\" height=\"30\" border=\"0\" alt=\"Download the File\"></a></td><td
        nowrap>".$myarray[$i]['file']."</td></tr>\n"; 



        ?> 
        </table> 
        </body> 
        </html>
        Danke für eure Hilfe

        Kommentar

        Lädt...
        X