CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум PHP

Ответ Создать новую тему
 
Старый 17.11.2011, 15:45   #1
nepster
Форумчанин
 
Аватар для nepster
 
Регистрация: 19.09.2009
Сообщений: 873
Репутация: 50 (50)
По умолчанию Файл для скачивания

Нужно записать текст в файл, при этом файл не создавать а предложить пользователю его скачать.

К примеру имеется список переписки, и пользователю нужно его скачать. Что это файл отдельно не создавать на сервере и тем самым не забивать память, нужно как бы записать текст в файл не создавая его на сервере предложить скачать, например кнопка скачать, жмем на нее генерируется файл и скачивается. Такое возможно реализовать?
nepster вне форума
Другие темы раздела
PHP какие команды надо посылать сайту tuborg.ru(ip 74.125.39.120) чтобы авторизовываться
1прошу модераторов сделать ссылку на эту тему программистам html 2коды страниц во вложениях. сам программирую на с++ использую сокеты, целью моей является сделать бота авторизатора для сайта tuborg.ru меня интересует какие команды надо посылать сайту tuborg.ru(ip 74.125.39.120) чтобы.... какие команды надо посылать сайту tuborg.ru(ip 74.125.39.120) чтобы авторизовываться
PHP Простой скрипт
Здравствуйте, нужна помощь с написанием простого скрипта: Вводишь число, нажимаешь кнопку, должно вывести> вводимое число * 1 вводимое число * 2 вводимое число * 3 и так до 10. Простой скрипт
Старый 17.11.2011, 17:36   #2
Vovan-VE
Модератор
 
Аватар для Vovan-VE
 
Регистрация: 10.01.2008
Адрес: Иркутск
Сообщений: 9,621
Репутация: 5177 (3362)
По умолчанию Re: Файл для скачивания

nepster, Здесь фрагмент гляньте: Скачивание файлов с русским названием
Vovan-VE вне форума
Старый 18.11.2011, 01:56  [ТС]   #3
nepster
Форумчанин
 
Аватар для nepster
 
Регистрация: 19.09.2009
Сообщений: 873
Репутация: 50 (50)
По умолчанию Re: Файл для скачивания

Ну почти


Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
 
$project = $this->administration->global_settings_w('project_control');
$project = $project['settings_param'];
?>
 
<div id="page-heading"><h1>http://<?=$project?> <img src="/style/control_panel/images/shared/archiv_strelka.gif" alt="img"/> Управление <img src="/style/control_panel/images/shared/archiv_strelka.gif" alt="img" />Личные сообщения пользователей</h1></div>
 
 
<?php
$private_messages = $this->administration->private_messages('ls_post');
$pm = '';
 
foreach($private_messages as $item) {
    
$user_sender = $this->authorization->user_data((int)$item['user_sender']);
$user_recipient = $this->authorization->user_data((int)$item['user_recipient']);
 
     
$pm .= "============================================================================================ \n\r";
$pm .= "Отправитель: ".$user_sender['login']."       "."Получатель: ".$user_recipient['login']."\n\r";
$pm .= "**********************************************************************  ".$item['ls_date']."\n\r";
$pm .= "Тема: ".$item['ls_title']."\n\r";
$pm .= "Сообщение (".$item['id']."): ".$item['ls_text']."\n\r";
$pm .= "********************************************************************** \n\r";
$pm .= "Статус: ".$item['status']." Удаление: ".$item['deletes']."\n\r";
$pm .= "============================================================================================ \n\r\n\r";
$pm .= "\n\r";
    
}
 
//echo $pm;
 
function isWindows() {
     return (DIRECTORY_SEPARATOR == '\\' ? true : false);
 }
   
function secure_tmpname($postfix = '.tmp', $prefix = 'tmp', $dir = null) {
     // validate arguments
     if (! (isset($postfix) && is_string($postfix))) {
         return false;
     }
     if (! (isset($prefix) && is_string($prefix))) {
         return false;
     }
     if (! isset($dir)) {
         $dir = getcwd();
     }
 
     // find a temporary name
     $tries = 1;
     do {
         // get a known, unique temporary file name
         $sysFileName = tempnam($dir, $prefix);
         if ($sysFileName === false) {
             return false;
         }
 
         // tack on the extension
         $newFileName = $sysFileName . $postfix;
         if ($sysFileName == $newFileName) {
             return $sysFileName;
         }
 
         // move or point the created temporary file to the new filename
         // NOTE: these fail if the new file name exist
   $newFileCreated = (iswindows() ? @rename($sysFileName, $newFileName) : @link($sysFileName, $newFileName));
         if ($newFileCreated) {
             return $newFileName;
         }
 
         unlink ($sysFileName);
         $tries++;
     } while ($tries <= 5);
 
     return false;
 }
 
 $txt_file = secure_tmpname($postfix = '.txt', $prefix = 'LS_', $dir = true);
 
  $FilePointer = fopen ($txt_file, "r+");
 
  fwrite($FilePointer, $pm); 
 
  fclose($FilePointer);
 
   $h = fopen($txt_file, 'r');
    if ($h) {
        header('HTTP/1.1 200 OK');
        header('Content-Type: application/force-download');
        header('Content-Length: ' . filesize($n));
        header('Content-Description: File Transfer');
        header('Content-Disposition: attachment; filename="Русское.имя.файла.txt"');
        header('Content-Transfer-Encoding: binary');
        
        fpassthru($h);
        fclose($h);
    }
    else {
        header('HTTP/1.1 403 Forbidden');
    }
    
?>
 

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

В данном коде все работает, однако в файл еще записывается


Код HTML
1
2
3
4
5
6
7
8
9
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Панель управления</title>
<link rel="stylesheet" href="/style/control_panel/css/screen.css" type="text/css" />
<link rel="stylesheet" href="/style/control_panel/css/datePicker.css" type="text/css" />
....
 

и все вот такие дела вместе с дизайном админ панели. Возможен ли вариант, создать временный файл в папке тамп и предложить его скачать ?

Нашел функцию secure_tmpname файл она создает, а вот как предложить скачать?
nepster вне форума
Старый 19.11.2011, 02:22   #4
forgergg
Форумчанин
 
Аватар для forgergg
 
Регистрация: 18.10.2011
Сообщений: 268
Репутация: 107 (107)
По умолчанию Re: Файл для скачивания

А вот так если сделать ?
Код HTML
1
2
3
 
<a href="/get_logs.php">Скачать логи</a>
 
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
 
//get_logs.php
$filename = "file_name.txt";
$content = "text \r\n";
$content.= "text2 \r\n";
header('HTTP/1.1 200 OK');
header('Content-Type: application/force-download');
header('Content-Description: File Transfer');
header("Content-Disposition: attachment; filename=\"{$filename}\"");
header('Content-Transfer-Encoding: binary');
echo $content;
 
Жмякаете на ссылку и браузер предлагает сохранить файл =)
forgergg вне форума
Старый 20.11.2011, 00:30   #5
vixa
Форумчанин
 
Регистрация: 08.08.2011
Адрес: Кривой Рог
Сообщений: 279
Репутация: 36 (39)
По умолчанию Re: Файл для скачивания

Смотри предлогаю такую идею создаешь форму в ней создать кнопку сабмит
и по нажатию этой кнопки происходят следующие действия
1. Создается временный файл с нужным текстом
2. У пользователя вылетает ссылка на этот файл к примеру <a href="www.mysite.ru/download/$file.pdf">Скачать</a> Или для удобства можно указать что ссылка автоматом откроется и начнется закачка
3.после того как ссылка была нажата или автоматически запущенна удалить файл с папки download
4. если ссылка не была нажата определенное время или файл не скачивали какое то время он удаляется

Писать за тебя не буду этот код но если что не получается вылажуй на форум помогу
vixa вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 09.01.2012, 14:13  [ТС]   #6
nepster
Форумчанин
 
Аватар для nepster
 
Регистрация: 19.09.2009
Сообщений: 873
Репутация: 50 (50)
По умолчанию Re: Файл для скачивания

понял, спасибо разобрался )
nepster вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Софт: Интернет и сеть Скорость скачивания.
Для скачивания фильмов пользуюсь программой uTorrent. Проблема появилась вчера. При очередном запуске появилось сообщение, что следует обновить версию вашего клиента, я обновил. Изначальная версия была 2.2, стала - 3.0. При этом, почему то упала скорость скачивания. То есть, перед обновлением была...
Desert Eagle
PHP для начинающих скрипт скачивания
всем привет! выдаю файлы таким скриптом: header('HTTP/1.1 200 Ok'); header('Accept-Ranges: bytes'); header('Content-Length: ' . $FileSize); header('Content-Type: application/mp3'); header('Content-Disposition: attachment; filename="' . $FileName . '";'); ob_get_clean(); ...
ПАЦАН
Joomla Разместить файл для скачивания
Я хочу разместить на моем сайте файл. Проблема в том, что я не знаю как зделать так, чтоб при нажатии на ссылку файл сохранялся
Сидоренко
HTML, CSS выложить файл для скачивания
мне нужно чтобы при нажатии на ссылку скачивался определенный файл , к примеру у меня на сервере лежит в папке images файл test.pdf , делаю на нее такой линк <a href="http://site.ru/image/test.pdf">скачать файл тест</a> в итоге страница не найдена ошибка 403 ,как это сделать?
Nebiros
HTML, CSS защита от скачивания
На сайте у меня папка с картинками и флэш оболочка, которая через xml достает из этой папки картинки и показывает пользователю. Из самой флэш оболочки картинки никак не сохранить, но в адресной строке виден путь, по которому флэшка достает картинки. Далее любой прогой типа телепорта скачиваем эту...
Alia17
Опции темы

Текущее время: 04:34. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru