Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Создание и скачивание файла
Форумы портала PHP.SU » » Вопросы новичков » Создание и скачивание файла

Страниц (1): [1]
 

1. VadiKO - 30 Декабря, 2018 - 10:11:41 - перейти к сообщению
Всех с наступающим!

Хочу записать тест с переменными в файл и скачать его по нажатию на ссылку, вот что получилось:

1. В файле index.php делаю include_once в том месте где должна появится ссылка на скачивание, include_once делаю для того, что в файле index.php было меньше кода:


PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. код код код...
  4. $x = 'red';
  5.  
  6. include_once "file.php";
  7.  
  8.  
  9. код код код...
  10. ?>
  11.  


2. Дальше файл file.php:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $color = 'Ваш выбор'.$x;
  4.  
  5. $filename = 'ready.xml';
  6.  
  7. if ($_GET['down'] == $filename) {  
  8.  
  9. header('Content-Type: application/force-download');
  10. header('Content-Disposition: attachment; filename ='.$filename);
  11.  
  12.  
  13. echo $color;
  14.  
  15.  
  16. }  
  17. else {  
  18. echo "<br /><a href='?down=$filename'>ready.xml</a><br />";
  19. }
  20.  
  21. ?>


В этом варианте возникает проблема, переменная $x не передается в файл, там пусто...

Попробовал все сделать в файле index.php

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. cod cod cod...
  4.  
  5. $x = 'red';
  6.  
  7. $color = 'Ваш выбор'.$x;
  8.  
  9. $filename = 'ready.xml';
  10.  
  11. if ($_GET['down'] == $filename) {  
  12.  
  13. header('Content-Type: application/force-download');
  14. header('Content-Disposition: attachment; filename ='.$filename);
  15.  
  16.  
  17. echo $color;
  18.  
  19.  
  20. }  
  21. else {  
  22. echo "<br /><a href='?down=$filename'>ready.xml</a><br />";
  23. }
  24.  
  25. cod cod cod....
  26. ?>
  27.  


В этом случае переменная приходит все отлично, но в файл записывается все что по коду выше выводится через echo.

Собственно нужна помощь, как в первом варианте сделать что бы переменная дошла, или как во втором варианте сделать что бы записало только то что нужно, а не все echo?

Спасибо всем кто откликнется!
2. Vladimir Kheifets - 01 Января, 2019 - 12:04:51 - перейти к сообщению
VadiKO пишет:
Всех с наступающим!

Хочу записать тест с переменными в файл и скачать его по нажатию на ссылку....
Собственно нужна помощь, как в первом варианте сделать что бы переменная дошла, или как во втором варианте сделать что бы записало только то что нужно, а не все echo?
Спасибо всем кто откликнется!


Добрый день и с Новым Годом!
Для примера взял свой файл HotelBookingReq.xml.
это index
Спойлер (Отобразить)

это file
Спойлер (Отобразить)

В include значение $x передаётся.
в браузере выдаётся сообщение см. скриншот
и закачивается xml-документ
Спойлер (Отобразить)

Удачи!
3. VadiKO - 01 Января, 2019 - 19:29:32 - перейти к сообщению
Спасибо!

Но по вашему примеру у меня не происходит запись в файл, происходит вывод (echo) ссылки на скачивание и содержимого что должно быть записано в файл, по нажатию на кнопку файл скачивается, но файл пустой. Не понял

К тому же, значение переменной $color выводить не нужно, нужно ее просто записать в файл и дать возможность при желание скачать файл с содержимым переменной $color.
4. Vladimir Kheifets - 02 Января, 2019 - 08:22:06 - перейти к сообщению
VadiKO пишет:
Спасибо!
Но по вашему примеру у меня не происходит запись в файл, происходит вывод (echo) ссылки на скачивание и содержимого что должно быть записано в файл, по нажатию на кнопку файл скачивается, но файл пустой. Не понял
К тому же, значение переменной $color выводить не нужно, нужно ее просто записать в файл и дать возможность при желание скачать файл с содержимым переменной $color.

Добрый день!
1. Если У вас выдаётся пустой файл, то попробуйте проверить адрес в в браузере.
Нужно проверить, в index.php не отправляется ли header раньше чем include_once "file.php";
У Вас, например, в коде строка 1 пустая, а стока 2 <?
Сообщения об ошибках у Вас выдаются?
Добавил пустую строку, как у Вас. Выдаются соощения:
Спойлер (Отобразить)

2.Не понятно:"дать возможность при желание скачать файл с содержимым переменной $color"
Возможно, Вам нужно в начале найти файл, содержащий переменную $color, а затем предлагать его скачать.
Удачи!
5. VadiKO - 03 Января, 2019 - 12:27:49 - перейти к сообщению
Протестировал сегодня еще раз, пишет ошибку:

Notice: Undefined index: down in /var/www/root/data/www/site.com/ file.php on line 4

вот эта строка не нравится ему:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. if ($_GET['down'] == $filename)
  5.  
  6. ?>


переменную с index.php передает, файл скачивает, но в файл записывает все содержимое что есть в файле index.php Огорчение
6. VadiKO - 07 Января, 2019 - 21:27:50 - перейти к сообщению
В общем добился результата, в index.php:

PHP:
скопировать код в буфер обмена
  1. <?
  2. код код код...
  3.  
  4. $x = 'red';
  5.  
  6. echo "<a href='file.php?download&k=".$x."'>download</a>";
  7.  
  8. код код код...
  9. ?>


Дальше файл file.php:

PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['download'])){
  2.        
  3.    if(isset($_GET['k']))
  4.         {
  5.                
  6.         if (isset($_GET['k'])) {$k = $_GET['k']; if ($k == '') {unset($k);}}
  7.                
  8.         $k = trim($_GET['k']);
  9.         $k = htmlspecialchars($k);
  10.         $k = mysql_escape_string($k);
  11.                
  12.         $color = 'Ваш выбор'.$k;
  13.  
  14.         $filename = 'ready.xml';
  15.        
  16.         header('Content-Type: application/force-download');
  17.         header('Content-Disposition: attachment; filename ='.$filename);
  18.        
  19.         echo $color;
  20.        
  21.         exit;
  22.  
  23.     }
  24.  
  25. }


Вот так вышло, возможно что-то не так и кто-то другой сделал бы по своему, но мой вариант работает и эффект достигнут.

Осталось правда решить вопрос с доступом, что бы без авторизации не качало, но это уже совсем другая история.
7. LIME - 08 Января, 2019 - 01:47:36 - перейти к сообщению
Если 6 строку убрать ничего не изменится
8. VadiKO - 08 Января, 2019 - 11:09:18 - перейти к сообщению
Спасибо! Улыбка

 

Powered by ExBB FM 1.0 RC1