Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Показать файл из базы в IFRAME / 13 сообщений из 13, страница 1 из 1
05.07.2006, 08:46
    #33831616
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Добрый день!

Необходимо вытащить файл из базы данных и показывать его в IFRAME.
Вроде сделал, но он показывает не в IFRAME, а открывает новое окно.

Как заставить его показывать в IFRAME?
...
Рейтинг: 0 / 0
05.07.2006, 09:01
    #33831644
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
А как ты его вытаскиваешь?
И как показываешь? Не через src?----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
05.07.2006, 09:07
    #33831652
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Если сразу указать src - все ОК. Но дело в том, что у меня файл лежит в базе, т.е. его надо динамически вытаскивать и показывать юзеру.
Поэтому в SRC указал путь к моей форме ASPX, а в форме в при загрузке станицы написал примерно вот такой код:

 private void OpenFile()
    {
        long lngFileSize;
        byte[] bytBuffer;
        int iReading;
        FileStream fStream = null;
        Stream outStream = null;
        try
        {
            string fullFileName = @"c:\TEMP\test.pdf";

            outStream = Page.Response.OutputStream;
            Page.Response.Clear();
            Page.Response.ContentType = "application/octet-stream";
            //Page.Response.ContentType = "application/pdf";
            Page.Response.AppendHeader("Connection", "keep-alive");
            Page.Response.AppendHeader("Content-Disposition", " attachment; filename = test.pdf ");
            fStream = new FileStream(fullFileName, FileMode.OpenOrCreate, FileAccess.Read);
            lngFileSize = fStream.Length;
            bytBuffer = new byte[(int)lngFileSize];
            while ((iReading = fStream.Read(bytBuffer, 0, (int)lngFileSize)) > 0)
            {
                outStream.Write(bytBuffer, 0, iReading);
            }
            fStream.Close();
            outStream.Close();
            // TODO: После этой команды почему-то все время появляется ошибка:
            // <"Поток находился в процессе прерывания">
            // А если убрать ее, то в конец текстовых файлов добавляется "мусор"
            // Что с этим делать пока не ясно
            //
            Page.Response.End();
        }
        catch //( System.Exception e )
        {
            // ALERT: Закоментированно, т.к. ошибка возникает всегда. Надо разбираться
        }
        finally
        {
        }
}
...
Рейтинг: 0 / 0
05.07.2006, 09:38
    #33831710
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Response.WriteFile рулит!

А по поводу проблемы... кончено браузер хочет загрузить файл тем более пдф----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
05.07.2006, 09:48
    #33831746
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Рулит!


Но PDF файлы напрочь отказывается показывать! Как только не пробовал, пока результат 0.
...
Рейтинг: 0 / 0
05.07.2006, 09:53
    #33831761
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Вообще самым простым способом был бы redirect

Но когда программно делаешь редирект на PDF сразу при загрузке страницы, то не позывает


Если делаешь отдельно кнопку только Redirect - все хорошо.

Что-то с этими PDF файлами какая-то странная заморочка...
...
Рейтинг: 0 / 0
05.07.2006, 10:15
    #33831869
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
as111Если сразу указать src - все ОК. Но дело в том, что у меня файл лежит в базе, т.е. его надо динамически вытаскивать и показывать юзеру.
Поэтому в SRC указал путь к моей форме ASPX, а в форме в при загрузке станицы написал примерно вот такой код:

Код: plaintext
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.
 private void OpenFile()
    {
        long lngFileSize;
        byte[] bytBuffer;
        int iReading;
        FileStream fStream = null;
        Stream outStream = null;
        try
        {
            string fullFileName = @"c:\TEMP\test.pdf";

            outStream = Page.Response.OutputStream;
            Page.Response.Clear();
            Page.Response.ContentType = "application/octet-stream";
            //Page.Response.ContentType = "application/pdf";
            Page.Response.AppendHeader("Connection", "keep-alive");
            Page.Response.AppendHeader("Content-Disposition", " attachment; filename = test.pdf ");
            fStream = new FileStream(fullFileName, FileMode.OpenOrCreate, FileAccess.Read);
            lngFileSize = fStream.Length;
            bytBuffer = new byte[(int)lngFileSize];
            while ((iReading = fStream.Read(bytBuffer,  0 , (int)lngFileSize)) >  0 )
            {
                outStream.Write(bytBuffer,  0 , iReading);
            }
            fStream.Close();
            outStream.Close();
            // TODO: После этой команды почему-то все время появляется ошибка:
            // <"Поток находился в процессе прерывания">
            // А если убрать ее, то в конец текстовых файлов добавляется "мусор"
            // Что с этим делать пока не ясно
            // 
            Page.Response.End();
        }
        catch //( System.Exception e )
        {
            // ALERT: Закоментированно, т.к. ошибка возникает всегда. Надо разбираться
        }
        finally
        {
        }
}


а если без выделенной строчки?
...
Рейтинг: 0 / 0
05.07.2006, 11:54
    #33832286
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Выделенная строка особо не влияет для обычных файлов. Но возникает ошибка (у меня все ошибки логируются, поэтому чтобы не захламлять лог закоментировал), а без нее как уже говорилось при просмотре текстовых файлах появляется "мусор".


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


Может можно придумать что красивее?
В базе могут быть документы word, pdf, tiff, txt
...
Рейтинг: 0 / 0
05.07.2006, 12:13
    #33832370
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
goto 1




1:
http://www.aspnetmania.com/Articles/Article/20.html----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
05.07.2006, 13:20
    #33832648
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Спасибо!

С хандлерами можно решить проблему, чтобы не сохранять файл на локальной машине. Это здорово.

Но проблема немножко ушла в другой ракус. У меня не получается открыть файлы word и pdf в том же самом окне, т.е. они открываются, но открываются в новом окне.
Если же делать Redirect, то они вообще не показываются.

А если ссылку забить руками, например:
http://localhost/test/test.pdf
то открывается так как надо. Но я ни как не могу сэмулировать открытие этого файла во фрейме динамически.

Может быть я не правильно указываю AppendHeader ?
...
Рейтинг: 0 / 0
05.07.2006, 14:51
    #33832975
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Ни чего не понимаю...
Нашел пример:
http://support.microsoft.com/default.aspx?scid=http%3a%2f%2fwww.microsoft.com%2fIntlKB%2frussia%2farticles%2fru307%2f6%2f03.ASP

Попробовал сделать.
Показывает абсолютно пустую страницу...
В чем заковыка?
...
Рейтинг: 0 / 0
05.07.2006, 15:13
    #33833087
as111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
Что-то похоже Микрософт с безопасностью переборщил.
С серверной стороны (т.е. код) отрабатывает - отправляет страницу. ТОлько вот IE ее не хочет ни в какую показывать...

В Firefox страница замечательно открывается и показывается именно так как мне надо.

Может кто знает, может это какой-то глюк IE который можно побороть?
...
Рейтинг: 0 / 0
05.07.2006, 15:28
    #33833155
C...R...a...S...H
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Показать файл из базы в IFRAME
maybe Сервис->Свойства обозревателя->Безопастность ->Другой->Автоматические запросы на загрузку----------------------------------------
Knowledge is P...O...w...E...R!
My site
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Показать файл из базы в IFRAME / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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