Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2013, 02:54   #1
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию Не получается создать страницу закачки файла.

На сервере в директории хранится файл "files/test.exe" (он там есть 100%).
Функцию скопипастил.
При открытии страницы файл загружается в окно браузера (вопросы вперемешку с буржуйским), а вроде должен спрашивать путь сохранения и сохраняться.
Что я делаю не так?

Код всего файла страницы:
PHP код:
<?php
function file_force_download($filename) {
  if (
file_exists($filename)) {
    
header($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');
    
header('Content-Type: application/octet-stream');
    
header('Last-Modified: ' gmdate('r'filemtime($filename)));
    
header('ETag: ' sprintf('%x-%x-%x'fileinode($filename), filesize($filename), filemtime($filename)));
    
header('Content-Length: ' . (filesize($filename)));
    
header('Connection: close');
    
header('Content-Disposition: attachment; filename="' basename($filename) . '";');
// Открываем искомый файл
    
$f=fopen($filename'r');
    while(!
feof($f)) {
// Читаем килобайтный блок, отдаем его в вывод и сбрасываем в буфер
      
echo fread($f1024);
      
flush();
    }
// Закрываем файл
    
fclose($f);
  } else {
    
header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
    
header('Status: 404 Not Found');
  }
  exit;
}

if (
file_exists("files/test.exe")){
    
file_force_download("files/test.exe");
}
?>
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 11.10.2013, 11:57   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Странный у вас подход.

Я вот так делаю

download.php

PHP код:
<?php
$file
='content/load/files/file.exe';// путь к файлу
$ex=end(explode(',',$file));
$mime='application/'.$ex;
header('Content-type:'.$mime);
header('Content-Length: '.filesize($file));
header('Content-Disposition: attachment; filename='.basename($file));
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");// дата в прошлом чтобы не кешировать
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
 
// всегда модифицируется
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");// HTTP/1.0
readfile($file);
exit;
?>
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 11.10.2013, 12:04   #3
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Все равно не работает.
Так даже в окно не грузится, и ясное дело не хочет выдавать запрос на скачивание.

Весь файл:
PHP код:
<?php
function file_force_download($file) {
if (
file_exists($file)){
$ex=end(explode(',',$file)); 
$mime='application/'.$ex
header('Content-type:'.$mime); 
header('Content-Length: '.filesize($file)); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");// дата в прошлом чтобы не кешировать 
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); 
 
// всегда модифицируется 
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1 
header("Cache-Control: post-check=0, pre-check=0"false); 
header("Pragma: no-cache");// HTTP/1.0 
readfile($file); 
exit; 
}
}

file_force_download("files/test.exe");
?>
alextrof94$gmail.com

Последний раз редактировалось alextrof94; 11.10.2013 в 12:10.
alextrof94 вне форума Ответить с цитированием
Старый 11.10.2013, 12:08   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

А файл действительно находится ниже загрузочного скрипта в папке files?

file_exists true выдает?
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 11.10.2013, 12:08   #5
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

PHP код:
function file_force_download($file) { 
if (
file_exists($file)){
$ex=end(explode('.',$file));
$mime='application/'.$ex
header('Content-type:'.$mime); 
header('Content-Length: '.filesize($file)); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");// дата в прошлом чтобы не кешировать 
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT"); 
 
// всегда модифицируется 
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1 
header("Cache-Control: post-check=0, pre-check=0"false); 
header("Pragma: no-cache");// HTTP/1.0 
readfile($file); 
} else { 
    
header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found'); 
    
header('Status: 404 Not Found'); 
  } 


Должно работать.

Последний раз редактировалось Кольша; 11.10.2013 в 12:15.
Кольша вне форума Ответить с цитированием
Старый 11.10.2013, 12:08   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Форум тупит, удалите сообщение.
Кольша вне форума Ответить с цитированием
Старый 11.10.2013, 12:09   #7
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Попробуйте так:

Код:
<?php
function file_force_download($file) {
if (!file_exists($file)) exit('Файл не существует');
if ($file){
$ex=end(explode(',',$file)); 
$mime='application/'.$ex; 
header('Content-type:'.$mime); 
header('Content-Length: '.filesize($file)); 
header('Content-Disposition: attachment; filename='.basename($file)); 
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");// дата в прошлом чтобы не кешировать 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
 // всегда модифицируется 
header("Cache-Control: no-store, no-cache, must-revalidate");// HTTP/1.1 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache");// HTTP/1.0 
readfile($file); 
exit; 
}
}

file_force_download("files/test.exe");
?>
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 11.10.2013, 12:10   #8
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от grominfo Посмотреть сообщение
А файл действительно находится ниже загрузочного скрипта в папке files?

file_exists true выдает?
да. я ж специально проверку делал дополнительную и выдавал эхо при результатах.
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 11.10.2013, 12:12   #9
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

я "if ($file){" сюда криво скопипастил, там "if (file_exists($file)){"
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 11.10.2013, 12:14   #10
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Я ошибку сделал.

Код:
$ex=end(explode(',',$file));
Надо
Код:
$ex=end(explode('.',$file));
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TWebBrowser и окно закачки файла Pcrepair Общие вопросы Delphi 10 23.11.2012 23:40
Нужно быстро создать страницу GODEXPERT Фриланс 5 19.11.2012 23:16
Нужно создать PHP страницу? Diablow PHP 2 01.04.2011 08:25
Нужен компонент для закачки файла dimfil Компоненты Delphi 1 21.01.2009 13:00
Запустить окно закачки файла при нажатии кнопки iankov JavaScript, Ajax 3 11.01.2009 13:14