Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Тонкий клиент+Tomcat+Oracle - писать, читать бинарные файлы в базу / 3 сообщений из 3, страница 1 из 1
17.06.2004, 23:22
    #32566346
insect
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тонкий клиент+Tomcat+Oracle - писать, читать бинарные файлы в базу
Имеется Tomcat и через него осуществляется доступ к базе данных Oracle(jsp и servlet). В настоящее время возникла задача обеспечить запись в базу данных файлов(бинарных), находящихся у пользователя и извлечение этих файлов из базы другими пользователями. Задача усложняется тем, что доступ должен осуществляться только посредством Internet Explorer (заказчик требует).
Может кто кинет ссылками с решением подобных задач?

Electronic Insect
...
Рейтинг: 0 / 0
18.06.2004, 08:58
    #32566495
SOMNAMBULA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тонкий клиент+Tomcat+Oracle - писать, читать бинарные файлы в базу
insectЗадача усложняется тем, что доступ должен осуществляться только посредством Internet Explorer (заказчик требует).
А что это может усложнять? Что значит извлечение из базы?
...
Рейтинг: 0 / 0
18.06.2004, 09:43
    #32566554
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тонкий клиент+Tomcat+Oracle - писать, читать бинарные файлы в базу
вообще-то я бы файлы расположил в файловой системе,а не в базе, но если так хочет заказчик .. да пусть будет так :)

Тут быстренько накидал примерчик

1. Создай в каталог C:\BLOB и положи туда файл, скажем, test.xls

2. Создадим таблицу с blob-ом и загоним туда наш файл
Код скрипта 1.sql
Код: 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.
41.
42.
43.
44.
45.
46.
47.
spool  1 
connect system/manager
drop directory documents;
CREATE OR REPLACE DIRECTORY documents AS 'C:\BLOB';
GRANT READ ON DIRECTORY documents TO PUBLIC;
connect scott/tiger

DROP TABLE my_docs;
DROP SEQUENCE my_docs_seq;
DROP PROCEDURE load_file_to_my_docs;

CREATE TABLE my_docs (
  id    NUMBER( 10 )     NOT NULL,
  name  VARCHAR2( 200 )  NOT NULL,
  doc   BLOB           NOT NULL
)
/

ALTER TABLE my_docs ADD (
  CONSTRAINT my_docs_pk PRIMARY KEY (id)
)
/

CREATE SEQUENCE my_docs_seq;


CREATE OR REPLACE PROCEDURE load_file_to_my_docs (p_file_name  IN  my_docs.name%TYPE) AS
  v_bfile      BFILE;
  v_blob       BLOB;
BEGIN
  INSERT INTO my_docs (id, name, doc)
  VALUES (my_docs_seq.NEXTVAL, p_file_name, empty_blob())
  RETURN doc INTO v_blob;

  v_bfile := BFILENAME('DOCUMENTS', p_file_name);
  Dbms_Lob.Fileopen(v_bfile, Dbms_Lob.File_Readonly);
  Dbms_Lob.Loadfromfile(v_blob, v_bfile, Dbms_Lob.Getlength(v_bfile));
  Dbms_Lob.Fileclose(v_bfile);

  COMMIT;
END;
/

EXEC load_file_to_my_docs('test.xls');

exit;


его запуск sqlplus /nolog @1

3. Создадим jsp для download -а файла text.xls из базы

Код: 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.
41.
42.
43.
44.
<%@ page import="java.sql.*,java.io.*" %>
<%
    Connection  conn = null;
    Statement stmt = null;
    ResultSet rs = null;
    java.sql.Blob my_blob = null;
    BufferedOutputStream binout = null;
    BufferedInputStream in = null;
    
    try {
      DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
      conn =  DriverManager.getConnection("jdbc:oracle:oci8:@","scott", "tiger");
      stmt = conn.createStatement ();
      rs = stmt.executeQuery ("select doc from my_docs where name='test.xls'");
      if (rs.next()) {
       // Get LOB locators into Java wrapper classes.
        my_blob = (java.sql.Blob)rs.getObject( 1 );
      }

      binout = new BufferedOutputStream ( response.getOutputStream() );
      in = new  BufferedInputStream ( (InputStream)my_blob.getBinaryStream());      

      response.setHeader("Content-Type","application/octet-stream;");
      response.setHeader("Content-disposition","attachment;filename=\"test.xls\"");

      int ch = in.read();
      while ( ch!=- 1  ) 
      {
       binout.write(ch);
       ch=in.read();
      }
    } catch ( Exception e ) {
       String errmsg = new String(e.getMessage().getBytes("ISO-8859-1"), "Cp1251");
       throw new Exception (errmsg);    
    } finally {
       try {
          if (rs!= null) rs.close(); 
          if (stmt!= null) stmt.close();
          if (conn!= null) conn.close();
          if (binout!= null) binout.close();
          if (in!= null) in.close();
       } catch ( Exception ignore ) {}
    }    
%>

Код рабочий

4. Upload предлагаю вам сделать самому и опубликовать здесь :)

А ссылки - читай оракловую доку ( наверняка она у тебя есть ), я практически все оттуда взял :)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Тонкий клиент+Tomcat+Oracle - писать, читать бинарные файлы в базу / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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