
Löysin esimerkkikoodin, jonka avulla ladataan tiedosto palvelimelle ja näytetään se selaimessa tai ladataan tiedosto koneelle. Tiedoston tiedot tallennetaan tietokantaan, josta niitä tarvittaessa haetaan. Jos lataan palvelimelle kuvan, näyttää selain sen kiltisti. Jos kyseessä on mp3-tiedosto, ei selain alakaan toistamaan sitä (välillä se kyllä toimi, mutta sähläsin kait jotain). Selain (Safari) avaa kyllä QuickTime ikkunan, mutta Q-logon päälle tulee kysymysmerkki. Mp3:n lataaminen koneelle ja toistaminen omalta koneelta iTunesilla kyllä onnistuu. (kohdassa ( isset($_GET["lataa"] ))
Voiskohan tuon saada toimimaan, muuttamalla jotain headerin kohtaa tuossa (isset($_GET["avaa"]))-kohdassa? Ovatko nuo "Content-Type: application/octet-stream" ja "Content-Disposition: inline;..." oikein, jos ei halua ladata tiedostoa koneelle, vaan toistaa sen suoraa selaimessa?
$tiedot = mysql_fetch_assoc($kysely);
if (isset($_GET["lataa"])) {
ob_end_clean();
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Size: $tiedot[koko]");
header("Content-Disposition: attachment; filename=\"" . urlencode($tiedot["nimi"]) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $tiedot[koko]");
@readfile("$latauskansio/$hae");
die();
}
if (isset($_GET["avaa"])) {
ob_end_clean();
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Size: $tiedot[koko]");
header("Content-Disposition: inline; filename=\"" . urlencode($tiedot["nimi"]) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: $tiedot[koko]");
@readfile("$latauskansio/$hae");
die();
}