Mam taki skrypt (pobierz.php):
$filename = $_GET['plik'];
// required for IE, otherwise Content-disposition is ignored
if(ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off'); switch( $file_extension ){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "rar": $ctype="application/rar"; break;
case "docx":
case "doc": $ctype="application/msword"; break;
case "xlsx":
case "xls": $ctype="application/vnd.ms-excel"; break;
case "pptx":
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
default: $ctype="application/force-download"; break;
}
header("Pragma: public"); // required header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); // required for certain browsers header("Content-Type: $ctype"); // change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".basename($filename)."\";" ); header("Content-Transfer-Encoding: binary"); readfile("".$sciezka."/".$filename ."");
I zamiast archiwum pobiera mi html [nazwa i rozszerzenie jak plik - plik1.rar] - po zmianie rozszerzenia na txt/html pokazuje:
<b>Warning
</b>: filesize() [
<a href='function.filesize'>function.filesize
</a>]: stat failed for plik1.zip in
<b>/sciezka/pobierz.php
</b> on line
<b>46
</b><br /> <b>Warning
</b>: Cannot modify header information - headers already sent by (output started at /sciezka/pobierz.php:46) in
<b>/sciezka/pobierz.php
</b> on line
<b>46
</b><br /> body {
background-color: #999;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
color: #333;
}
#reszta{
...
}
.css {
ktory nie jest nigdzie załączany do pliku
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
46 linijka: header("Content-Length: ".filesize($filename)."");
Jak ją wywaliłam nie wyświetlało mi błędu tylko nadal tworzyło plik html...
plik nie jest includowany w index.php - a tylko tam jest załączony css [oddzielny plik.css] - nie wiem skąd i dlaczego go wyciąga.
Link do pobierania pliku wygląda tak:
http://www.adres.pl/pobierz/2/plik1.zipwpis .htaccess
RewriteRule ^pobierz/([0-9]+)/([a-z0-9.]+)$ pobierz.php?user=$1&plik=$2 [L]
Jak w nazwie pliku występuje więcej niż 1 kropka jest ok np: nazwa.jakiegos.innego.zip
Ten post edytował poczatkujaca12 4.07.2010, 11:01:31