Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть файл средствами PL/SQL, при втором вызове, файл не открывается 
V
    Опции темы
SeriousMalish
Дата 2.4.2013, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 1.4.2007

Репутация: нет
Всего: нет



Здравствуйте!
файлы лежат в таблице:
Код

CREATE TABLE WWDOC_DOCUMENT
(
  NAME          VARCHAR2(256 BYTE)              NOT NULL,
  MIME_TYPE     VARCHAR2(128 BYTE),
  DOC_SIZE      NUMBER,
  DAD_CHARSET   VARCHAR2(128 BYTE),
  LAST_UPDATED  DATE,
  CONTENT_TYPE  VARCHAR2(128 BYTE),
  CONTENT       LONG RAW,
  BLOB_CONTENT  BLOB,
  ID_OBJ        NUMBER                          NOT NULL
)

Есть HTML страница содержащая таблицу с перечнем файлов (ссылки):
Код

CREATE OR REPLACE PROCEDURE DOC_ZAYAVKA 
(
ID_Z number default null,
ID_USER number default null
)
AS
begin
htp.print('
<script language="JavaScript">
function opendocwin(id_doc)
{
opendocwin = window.open("download_doc?id_doc="+id_doc,"download_doc");
}
</script>
');
htp.htmlOpen;
htp.headOpen;
htp.print('<h1>Прикрепленные документы</h1>');
htp.headClose;
htp.bodyopen();
htp.formOpen('DOC_ZAYAVKA?id_z='||id_z||'&'||'id_user='||id_user||'',cmethod=>'POST', ctarget => '_self',cattributes=>'NAME=DOC_ZAYAVKA');
htp.tableOpen(cattributes=>'border=1 cellspacing=0 cellpadding=2 width=100% ALIGN=CENTER');
htp.tableRowOpen();
htp.tableHeader('Наименование');
for doc in 
(
select id_obj id_doc, NAME nam from WWDOC_DOCUMENT 
)
loop
htp.tableRowOpen();
htp.print('<TD><a href="javascript:opendocwin('||doc.id_doc||');">'||doc.nam||'</a></TD>');
end loop;
htp.tableclose;
htp.formclose;
HTP.BODYCLOSE;
htp.htmlclose;
end;

При переходе по ссылке, отрабатывается процедура:
Код

CREATE OR REPLACE PROCEDURE download_doc 
(
id_doc  number default 0
)
AS
l_blob_content  WWDOC_DOCUMENT.blob_content%TYPE;
l_mime_type     WWDOC_DOCUMENT.mime_type%TYPE;
BEGIN
  SELECT blob_content,
         mime_type
  INTO   l_blob_content,
         l_mime_type
  FROM   WWDOC_DOCUMENT 
  WHERE  id_obj = id_doc;
 OWA_UTIL.mime_header(l_mime_type, FALSE);
  HTP.p('Content-Length: ' || DBMS_LOB.getlength( l_blob_content));
  OWA_UTIL.http_header_close;
  WPG_DOCLOAD.download_file (l_blob_content);
EXCEPTION
  WHEN OTHERS THEN
    HTP.htmlopen;
    HTP.headopen;
    HTP.title('File Downloaded');
    HTP.headclose;
    HTP.bodyopen;
    HTP.header(1, 'Download Status');
    HTP.print(SQLERRM);
    HTP.bodyclose;
    HTP.htmlclose;
END;

Файл открывается. 
При попытке открыть файл по ссылке повторно или открыть другой файл, ни какого действия не происходит(файлы не открываются). Файл можно открыть только после обновления страницы DOC_ZAYAVKA. Подскажите, пожалуйста, почему не работает ссылка на повторное открытие файла? И как это исправить
PM MAIL   Вверх
behelit_ru
Дата 5.5.2013, 22:58 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Попробуйте изменить javascript
Код

<script language="JavaScript">
function opendocwin(id_doc)
{
var w = window.open("download_doc?id_doc="+id_doc,"download_doc");
}
</script>

Подозреваю, что функция просто "сносится" от такого присвоения и больше не работает.

И совет, используйте инструменты разработчика в браузере, чтобы видеть ошибки скриптов, очень помогает smile

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.