...
header("Content-Disposition: attachment; filename=$fn");
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
header("Content-Type: audio/mpeg");
print $content;
...
сохранение файлов с сервера
вот есть небольшенький вапросик... как пользователю сохранить на комп файл с сервера? т.е. не по нажатию на прямую ссылку к файлу, а если допустим путь к файлу храниться в переменной, и тогда его сохранить по нажатию на button, или при наступлении какованибудь событтия... или вообще есть какиенибудь другие способы кроме прямой ссылки?
Если там выдается файл на скачку, то появится окно до скачивания и дальше, как обычно. Браузер останется на старой странице.
а что это за функция таккая переадрессации браузера?????
или как-то так.
не так не пайдет... надо скачать файл лежащий вне директорий виртуального хоста, тоесть с любого диска компа... или предложишь все скопировать в папку www)))
Зачем? Пишешь или находишь скрипт, который читает файл и выдает его клиенту.
так вот что то не понятно как его выдать то клиенту...?
Чтобы сервер "заставил" браузера среагировать на входящий файл (с предложением сохранить), надо перед тем этому серверу дать запрос. И неважно, как ты его дашь. Или так: www.server.ru/getfile.php?id=1 или так www.server.ru/ или по-другому. Не знаешь как дать запрос или тебе не нравится <a href=www.server.su/dn.php?f=88 ..</a>. Можешь заюзать windows.location='www.server.su/dn.php?f=88'. А остальное уже зависит от скрипта, который находится "по ту сторону веба".. Уже скрипт может выдавать в заголовке 206 Partial Content (к примеру). Вот скриптик, попробуй:
Код:
<?php
$fn=$_GET["filename"];
if (!file_exists($fn))
{
header ("HTTP/1.0 404 Not Found");
exit;
}
$fsize = filesize($fn);
$ftime = date("D, d M Y H:i:s T", filemtime($fn));
$fd = @fopen($fn, "rb");
if (!$fd){
header ("HTTP/1.0 403 Forbidden");
exit;
}
$content = fread($fd, filesize($fn));
fclose($fd);
if ($range) {
header("HTTP/1.1 206 Partial Content");
}
else {
header("HTTP/1.1 200 OK");
}
header("Content-Disposition: attachment; filename=$fn");
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
header("Content-Type: audio/mpeg");
print $content;
exit;
?>
$fn=$_GET["filename"];
if (!file_exists($fn))
{
header ("HTTP/1.0 404 Not Found");
exit;
}
$fsize = filesize($fn);
$ftime = date("D, d M Y H:i:s T", filemtime($fn));
$fd = @fopen($fn, "rb");
if (!$fd){
header ("HTTP/1.0 403 Forbidden");
exit;
}
$content = fread($fd, filesize($fn));
fclose($fd);
if ($range) {
header("HTTP/1.1 206 Partial Content");
}
else {
header("HTTP/1.1 200 OK");
}
header("Content-Disposition: attachment; filename=$fn");
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: ".($fsize-$range));
header("Content-Range: bytes $range-".($fsize -1)."/".$fsize);
header("Content-Type: audio/mpeg");
print $content;
exit;
?>
www.serv.com/script.php?filename=blabla.mp3
Код:
кстате какие значения может принимать Content-Type:, что бы копировать с нормальным (расширением файла) расширением?
Цитата:
кстате какие значения может принимать Content-Type:, что бы копировать с нормальным (расширением файла) расширением?
Если у тебя стоит веб-сервер, то можешь достать файл mime.types из папки Апач. Если же нет - см. вложения. Кстати, у каждого может быть разный.
header("Content-Disposition: attachment; filename=$fn");
вроде бы указано под каким именем надо сохранить, а именно под тем под которым его открыли...
и странно что нигде не инициализирована $range
Цитата: Maniak
есть немножко какойто странный глюк: файл всевремя сохраняется под именем выполняющего скрипта, хотя вот здесь
header("Content-Disposition: attachment; filename=$fn");
вроде бы указано под каким именем надо сохранить, а именно под тем под которым его открыли...
и странно что нигде не инициализирована $range
header("Content-Disposition: attachment; filename=$fn");
вроде бы указано под каким именем надо сохранить, а именно под тем под которым его открыли...
и странно что нигде не инициализирована $range
Если тебе нужны разьяснения читай [COLOR=red]тут[/COLOR] :)
как работает print? синхронно или асинхронно? не вылетит ли скрипт по таймауту?
2Михаил На дату смотреть учили?:)))
неужто за 2 месяца ситуация так кардинально поменялась? :-?
Во избежание флуда тему закрываю.