vasamen
3.02.2015 - 18:41
суть проблемы тут:
в корне сайта есть файл: 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
3.02.2015 - 19:48
Делаю вот так:
$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
3.02.2015 - 20:16
передавай в 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
3.02.2015 - 20:38
такс, спасибо.
Получилось так:
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
3.02.2015 - 20:39
или хоть test_name.txt
vasamen
3.02.2015 - 20:40
Игорь_Vasinsky
спасибо все работает но остается один маленький и последний вопрос, я задал его в своем посте выше
Игорь_Vasinsky
3.02.2015 - 21:11
+ в урле = пробелу. понятно ?
_____________
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
3.02.2015 - 21:15
Игорь_VasinskyРазобрался, сделал так:
$name = str_replace(' ', '_', $name);
Правильно???
Игорь_Vasinsky
3.02.2015 - 21:42
ага.
_____________
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
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.