[ chaki1976 @ 27.10.2005. 18:22 ] @
E ovako imam php downloadskript i sve radi perfektno osim jedne stvari
a to je:
Ubacio sam par mp3 fajlova e problem je u tome što kad klikneš na link download
starta ti winmediaplayer, a ne download.
E moje je pitanje dali se može i kako to sprečiti???

ista stvar i sa videoklipovima ali to mi sad i nije tako važno

a evo i cede ako treba:

Code:

require_once "maincore.php";
require_once "subheader.php";
require_once "side_left.php";
include LOCALE.LOCALESET."downloads.php";

if (isset($download_id) && !isNum($download_id)) fallback("index.php");

if (isset($download_id)) {
    $res = 0;
    if ($data = dbarray(dbquery("SELECT download_url,download_cat FROM ".$db_prefix."downloads WHERE download_id='$download_id'"))) {
        $cdata = dbarray(dbquery("SELECT * FROM ".$db_prefix."download_cats WHERE download_cat_id='".$data['download_cat']."'"));
        if (checkgroup($cdata['download_cat_access'])) {
            $res = 1;
            $result = dbquery("UPDATE ".$db_prefix."downloads SET download_count=download_count+1 WHERE download_id='$download_id'");
            redirect($data['download_url']);
        }
    }
    if ($res == 0) redirect("downloads.php");
}

if (!isset($cat_id)) {
    opentable($locale['400']);
    $result = dbquery("SELECT * FROM ".$db_prefix."download_cats ORDER BY download_cat_name");
    $rows = dbrows($result);
    if ($rows != 0) {
        $counter = 0; $columns = 2; 
        echo "<table width='100%' cellspacing='0' cellpadding='0' class='tbl'>\n";
        while ($data = dbarray($result)) {
            if (checkgroup($data['download_cat_access'])) {
                if ($counter != 0 && ($counter % $columns == 0)) echo "</tr>\n<tr>\n";
                $num = dbcount("(download_cat)", "downloads", "download_cat='".$data['download_cat_id']."'");
                echo "<td align='center' valign='top' width='50%'><a href='".FUSION_SELF."?cat_id=".$data['download_cat_id']."'>".$data['download_cat_name']."</a> <span class='small2'>($num)</span>";
                if ($data['download_cat_description'] != "") echo "<br>\n<span class='small'>".$data['download_cat_description']."</span>";
                echo "</td>\n" ;
                $counter++;
            }
        }
        echo "</tr>\n</table>\n";
    } else {
        echo "<center><br>\n".$locale['430']."<br><br>\n</center>\n";
    }
    closetable();
} else {
    $res = 0;
    if (!isNum($cat_id)) fallback(FUSION_SELF);
    $result = dbquery("SELECT * FROM ".$db_prefix."download_cats WHERE download_cat_id='$cat_id'");
    if (dbrows($result) != 0) {
        $cdata = dbarray($result);
        if (checkgroup($cdata['download_cat_access'])) {
            $res = 1;
            opentable($locale['400'].": ".$data['download_cat_name']);
            $rows = dbcount("(*)", "downloads", "download_cat='$cat_id'");
            if (!isset($rowstart) || !isNum($rowstart)) $rowstart = 0;
            if ($rows != 0) {
                $result = dbquery("SELECT * FROM ".$db_prefix."downloads WHERE download_cat='$cat_id' ORDER BY download_title LIMIT $rowstart,15");
                $numrows = dbrows($result); $i = 1;
                while ($data = dbarray($result)) {
                    if ($data['download_datestamp']+604800 > time()+($settings['timeoffset']*3600)) {
                        $new = " <span class='small'>".$locale['410']."</span>";
                    } else {
                        $new = "";
                    }
                    echo "<a href='".FUSION_SELF."?cat_id=$cat_id&download_id=".$data['download_id']."' target='_blank'>".$data['download_title']."</a> - ".$data['download_filesize']." $new<br>\n";
                    if ($data['download_description'] != "") echo nl2br(parseubb($data['download_description']))."<br>\n";
                    echo "<span class='small'><font class='alt'>".$locale['411']."</font> ".$data['download_license']." |
<font class='alt'>".$locale['412']."</font> ".$data['download_os']." |
<font class='alt'>".$locale['413']."</font> ".$data['download_version']."<br>
<font class='alt'>".$locale['414']."</font> ".showdate("%d.%m.%y", $data['download_datestamp'])." |
<font class='alt'>".$locale['415']."</font> ".$data['download_count']."</span>\n";
                    echo ($i != $numrows ? "<br><br>\n" : "\n"); $i++;                }
                closetable();
                echo "<div align='center' style='margin-top:5px;'>\n".makePageNav($rowstart,15,$rows,3,FUSION_SELF."?cat_id=$cat_id&")."\n</div>\n";
            } else {
                echo $locale['431']."\n";
                closetable();
            }
        }
    }
    if ($res == 0) redirect(FUSION_SELF);
}

require_once "side_right.php";
require_once "footer.php";
?>

[ SmilieBG @ 27.10.2005. 18:51 ] @
verovatno zato sto saljes kao link, a ne kroz headers

takodje, izbrisi winamp (ili ga izbrisi iz browsera) pa ce ti ponuditi download :)

takodje, verovatno da mogu da urade Save as...

ovako ide kod mene:

Code:

//What type of file is this.
$filetype=mime_content_type($file);

//Set the filename
$fn = substr($file, strrpos($file, '/')+1);
header("Content-Disposition: attachment; filename=\"$fn\"");

//Set the content type
header('Content-type: '.$filetype);

//Set file size
header("Content-Length: ".filesize($file));

//Read the file into the browser.
readfile( $file );


Ovo je solo skripta kojoj dakle prosledjujes parametar ($file), koji se zatim downloaduje, bez opcije da ga slusaju / gledaju sa servera.

Poz,
Sale
[ noviKorisnik @ 27.10.2005. 18:56 ] @
Prvo, postoji forum za PHP pa je tu prebačena tema. Drugo, ima dosta toga već pisano na temu "kako se realizuje download" i ovde na forumu a i pre toga http://php.net/header

U čemu je problem s ovim što si okačio? Imaš
Code:
redirect($data['download_url']);

što praktično ispadne kao da je korisnik kliknuo na link prema fajlu s te adrese (kažeš mp3... pa browser pokreće program za čitanje fajla).

Evo ti copy/paste s onog linka više što sam ti ostavio... vezano za download
Code:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

U prvi header postavi odgovarajući tip fajla za mp3 (potraži MIME content type).

U drugom headeru zameni ime fajla koje se nudi korisniku za download.

U trećem headeru za argument stavi svoj $data ['download_url'].

Nakon svega ovoga dodaš još komandu exit i gotova stvar.
[ chaki1976 @ 27.10.2005. 20:01 ] @
Izvinite sto nisam postavio pitanje u odgovarajucoj kategoriji.
hvala za brz odgovor, samo ja sam noob za php tako da nemam pojma di i sta trebam zamjenit postavit.
Mozel malo jednostavniji odgovor kako di i sta i ovaj skript sluzi i za druge formate
tako da mi se nesto nepobrka ako postavim fajl .rar ili .zip ili .avi
Hvala.
[ noviKorisnik @ 27.10.2005. 20:34 ] @
Pa praktično ti ovaj Content-type nije neophodan za sam download, jer funkcija za određivanje tipa fajla koju je naveo SmilieBG - mime_content_type - često nije podržana na serverima. S druge strane, za download je korisno da se pošalje kolika je veličina fajla (Content-Length).

Sve u svemu... umesto reda
Code:
redirect($data['download_url']);

postavi sledeće
Code:
$filepath = $data ['download_url'];

header ('Content-Disposition: attachment; filename="' . substr ($filepath, strrpos ($filepath, '/') + 1) . '"');

header ('Content-Length: ' . filesize ($filepath));

readfile ($filepath);

exit;
[ chaki1976 @ 28.10.2005. 21:20 ] @
Svaka cast majstore uradio som ovo kako si naveo i radi