Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / отправить rtf клиенту / 9 сообщений из 9, страница 1 из 1
24.10.2006, 12:32
    #34076565
Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
Беру на сервере шаблон формата rtf, читаю в строку и набиваю данными из бызы.

Теперь нужно эту строку передать клиенту, да так, что-б при нажании на ссылочку у него появлялось окошечко (открыть/сохранить файл "Договор.rtf").

Как это сделать? Какую служебную информацию отправлять и в каком виде?
Главное - идея!
...
Рейтинг: 0 / 0
24.10.2006, 13:00
    #34076710
RadioShark
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
Примерно так:
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/vnd.ms-word";
Response.AddHeader("Content-Disposition", "attachment; filename=bill.doc");
Response.OutputStream.Write(od.fileContent, 0, od.fileContent.Length);
Response.Flush();
Response.Close();



--
С уважением,
Алексей К.
...
Рейтинг: 0 / 0
24.10.2006, 16:07
    #34077621
Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
Примерно так:
                Response.ClearContent();
                Response.ClearHeaders();
                Response.ContentType = "application/vnd.ms-word";
                Response.AddHeader("Content-Disposition", "attachment; filename=bill.doc");
                Response.OutputStream.Write(od.fileContent, 0, od.fileContent.Length);
                Response.Flush();
                Response.Close();






А что такое "od"?
Хотелось-бы поподробнее...



Главное - идея!
...
Рейтинг: 0 / 0
24.10.2006, 20:12
    #34078414
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
od.FileContent - это видимо byte[], содержащий файл.

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
24.10.2006, 21:17
    #34078494
Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
od.FileContent - это видимо byte[], содержащий файл.

Эммм... Так значит перед тем как передать заполненный текст, его обязательно нужно сохранить обратно в файл? А без этого можно? Что-б шаблон оставался шаблоном, а сформированный документ из памяти отправлялся сразу клиенту?

типа:
1. прочитали содержимое файла doc.rtf в строку (или куда там еще можно)
2. Пропарсили ее (строку) и добавили в нее необходимые данные
3. Отправили эту строку клиенту (респонсом или еще как)

Особое внимание хочу обратить на третий пункт. Что конкретно слать ДО и ПОСЛЕ отправки строки?

Буду очень признателен за пример из жизни

Главное - идея!
...
Рейтинг: 0 / 0
25.10.2006, 01:31
    #34078685
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
До Response.Write(str) нужно установить хидеры, а после - вызвать Response.End()

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
25.10.2006, 13:47
    #34080087
Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
До Response.Write(str) нужно установить хидеры, а после - вызвать Response.End()


Не силен я пока в хедерах. Попробовал так - все вываливается на экран браузера, как в блокноте:

Response.ClearHeaders();
Response.ContentType = "Application/msword";

StreamReader sr = File.OpenText(Request.PhysicalApplicationPath + "doc.rtf");
string input = null;
while ((input = sr.ReadLine()) != null) Response.Write(input);
sr.Close();

Response.End();

Главное - идея!
...
Рейтинг: 0 / 0
25.10.2006, 16:47
    #34080998
Dimon aka Manowar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
Ну а Content-Disposition где?

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
31.10.2006, 12:21
    #34093724
Dimon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправить rtf клиенту
Ну а Content-Disposition где?


Спасибо! Более-менее разобрался.
Предыдущий пример заработал после того, как нажал на кнопочку перехода (до этого жал F5
)
Итак, что получилось:

Response.ClearHeaders(); // Очищаем заголовки
Response.ContentType = "Application/msword"; // Содержимое - документ MS WORD
Response.Charset = "UTF-8"; // Кодировка - UTF-8
Response.AppendHeader("Content-Disposition", "attachment; filename=doc.rtf"); // Полученный файл будет открываться или сохраняться под именем "doc.rtf"

StreamReader sr = File.OpenText(Request.PhysicalApplicationPath + "doc.rtf");// Считываем файл-шаблон doc.rtf из корня нашего web-приложения
StringBuilder myStr = new StringBuilder(sr.ReadToEnd());// в StringBuilder (хотя вроде можно и в строку)
sr.Close();// Закрываем поток
...
Response.Write(myStr.ToString()); // В самом простом варианте выводим все содержимое StringBuilder-а.
//Разумеется, в моей задаче выводить нужно все, кроме управляющих конструкций, плюс, значения из базы данных.
...
Response.End();// Завершаем отправку клиенту.


На этом вопрос данной темы закрыт. Идем к следующей проблеме: борьба с кодировками.

Главное - идея!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / отправить rtf клиенту / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]