[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скачать файл
vasamen
суть проблемы тут:
в корне сайта есть файл: site.ru/file.exe

На странице есть много ссылок(около 250шт.)
вида: site.ru
Есть файл: site.txt
в файле:
Название1 | site.ru(адрес)
Название2 | site.ru(адрес)
Название3 | site.ru(адрес)
Название4 | site.ru(адрес)

в файле test.php ссылки выводятся так:
        <a href="'.trim($url).'"> '.trim($title).' </a>


Нужно что бы в адрес передавался файл file.exe только с названием из переменной $title
что бы ссылка имела вид site.ru/$title.exe (site.ru/название1.exe и т.д.)

Смотрел функцию: readfile но не понял как сделать такое!
Помогите такое провернуть! Заранее спасибо!
vasamen
Делаю вот так:

$local_file = 'products.txt';
$download_file = 'name.txt';


if (file_exists($local_file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($download_file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize($local_file));
readfile($local_file);
exit;
}


Все хорошо получается! Но как сделать что бы еще новое название передавалось из файла .txt тоесть из переменной? при переходе по ссылке скачивал файл с новым названием?
Игорь_Vasinsky
передавай в GET номер строки из файла с именами

из файла получай массив - и читай строку по индексу.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vasamen
такс, спасибо.
Получилось так:
test.php
$title = 'test name';
echo ' <a href="http://site.ru/down.php?game='.urlencode($title).'.txt" target="_blank">тест</a>';


Файл down.php
$name = htmlspecialchars(urlencode($_GET["game"]));
$local_file = 'products.txt';
$download_file = $name;

if (file_exists($local_file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($download_file));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize($local_file));
readfile($local_file);
exit;
}

использую urlencode() что бы заменить пробелы(так как пробелы не передаются, передается только первое слово)
Но при выходе получается файл с названием test+name.txt
Вопрос как сделать так что бы при выходе файл был не test+name.txt а просто test name.txt тоесть без + а с пробелами???
vasamen
или хоть test_name.txt
vasamen
Игорь_Vasinsky
спасибо все работает но остается один маленький и последний вопрос, я задал его в своем посте выше
Игорь_Vasinsky
+ в урле = пробелу. понятно ?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vasamen
Игорь_Vasinsky

Разобрался, сделал так:
$name = str_replace(' ', '_', $name);


Правильно???
Игорь_Vasinsky
ага.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.