|
|
|
| Всем привет!
Я к вам по такому вопросу, у меня на сайте стоит скрипт фалового архива, что бы пользователь мог скачивать файлы я использую скрипт сохранения файлов:
<?
function pr_down_files($filename,$realname) {
global $url;
$skin_redits=0;
if (!file_exists($filename)){
$skin_redits=1;
$fc_null=0;
}
if($fc_null!==0 && $_GET['open']=="1"){
$extension = strtolower(substr(strrchr($filepath, "."), 1));
// MIME типы
switch($extension){
case "asf": $type = "video/x-ms-asf"; break;
case "avi": $type = "video/x-msvideo"; break;
case "exe": $type = "application/octet-stream"; break;
case "mov": $type = "video/quicktime"; break;
case "mp3": $type = "audio/mpeg"; break;
case "mpg": $type = "video/mpeg"; break;
case "mpeg": $type = "video/mpeg"; break;
case "rar": $type = "encoding/x-compress"; break;
case "txt": $type = "text/plain"; break;
case "wav": $type = "audio/wav"; break;
case "wma": $type = "audio/x-ms-wma"; break;
case "wmv": $type = "video/x-ms-wmv"; break;
case "zip": $type = "application/x-zip-compressed"; break;
default: $type = "application/force-download"; break;
}
$from=$to=0; $cr=NULL;
if (isset($_SERVER['HTTP_RANGE'])) {
$range=substr($_SERVER['HTTP_RANGE'], strpos($_SERVER['HTTP_RANGE'], '=')+1);
$from=strtok($range, '-');
$to=strtok('/'); if ($to>0) $to++;
if ($to) $to-=$from;
header('HTTP/1.1 206 Partial Content');
$cr='Content-Range: bytes ' . $from . '-' . (($to)?($to . '/' . $to+1):filesize($filename));
} else header('HTTP/1.1 200 Ok');
$etag=md5($filename);
$etag=substr($etag, 0, 8) . '-' . substr($etag, 8, 7) . '-' . substr($etag, 15, 8);
header('ETag: "' . $etag . '"');
header('Accept-Ranges: bytes');
header('Content-Length: ' . (filesize($filename)-$to+$from));
if ($cr) header($cr);
header('Connection: close');
header('Content-Type: ' . $type);
header('Last-Modified: ' . gmdate('r', filemtime($filename)));
$f=fopen($filename, 'r');
header('Content-Disposition: attachment; filename="' . basename($realname) . '";');
if ($from) fseek($f, $from, SEEK_SET);
if (!isset($to) or empty($to)) {
$size=filesize($filename)-$from;
} else {
$size=$to;
}
$downloaded=0;
while(!feof($f) and !connection_status() and ($downloaded<$size)) {
echo fread($f, 512000);
$downloaded+=512000;
flush();
}
fclose($f);
}
return $skin_redits;
}
?>
|
он работает отлично, но вот в чем проблемка у меня, ссылка на сохранение файла у меня выглядет примерно так: <a href="index.php?act=donwload&type=save&id=1">Сохранить файл</A>
все бы нечего, но вот как мне сделать так, что бы вместо стандартного меню сохранения по умолчанию выскакивало окно какого нибудь файлового менеджера, как для примера Donwload Master, а то если ссылка выглядет так, как я в примере написал, то через файловые менеджеры я скачать программу не могу! | |
|
|
|
|
|
|
|
для: saider
(28.06.2009 в 22:59)
| | смотрите в сторону RewriteEngine и RewriteRule. | |
|
|
|
|
|
|
|
для: nikita2206
(28.06.2009 в 23:16)
| | А что, кроме этого разве больше других вариантов на PHP нету? | |
|
|
|
|
|
|
|
для: SaIdEr
(29.06.2009 в 00:47)
| | Народ, ну что, не кто не поможет мне?:( | |
|
|
|
|
|
|
|
для: SaIdEr
(30.06.2009 в 01:25)
| | Висит мужик на краю пропасти и орет:
Помогите! Кто нибудь!
Голос: Это я, Господь Бог!. Прыгай сын мой, я спасу тебя.
Пауза....
- А еще есть кто нибудь?
Чем реврайт то не угодил? Ну можно скриптом преобразовать урл, результат то один будет, мороки только побольше. | |
|
|
|
|
|
|
|
для: Николай2357
(30.06.2009 в 08:23)
| | а как нужно написать в .htaccess команды RewriteEngine и RewriteRule что бы все заработало? Я с ним не разу еще не сталкивался | |
|
|
|