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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение разных файлов в БД 
V
    Опции темы
Swatch
Дата 1.2.2008, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день...

нужно сохранять файлы в БД и потом брать их из базы и сохранять на диск. храню в виде блобов. только для JPG картинок сохраняла так:
Код

                BufferedImage image = ImageIO.read(jFileChooser1.getSelectedFile().getCanonicalFile());
                ByteArrayOutputStream output = new ByteArrayOutputStream();
                ImageIO.write(image, "jpg", output);
                SerialBlob blob;
                try {
                    blob = new SerialBlob(output.toByteArray());
                    if (blob.length() > 5242880){
                        jOptionPane1.showMessageDialog(this,"Too large file","Warrning",JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                } catch (SerialException ex) {
                    blob = null;
                } catch (SQLException ex) {
                    blob = null;
                }


охраняла на диск так:
Код

BufferedImage image;
                try {
                    image = ImageIO.read(blob.getBinaryStream());
                } catch (SQLException ex) {
                    image = null;
                } catch (IOException ex) {
                    image = null;
                }
               output = new File(("C:\\attachement.jpg"));
                try {
                    ImageIO.write(image, "jpg", output);
                } catch (IOException ex) {
                }


Сейчас мне нужно, чтобы была возможность работать с любыми файлами: doc, txt, html, jpg, gif и т.д. то есть вообще абсолютно любыми... не знаю, как изменить код...  smile  помогите, пожалуйста...  smile 
PM MAIL   Вверх
Kangaroo
Дата 1.2.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

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



Цитата(Swatch @  1.2.2008,  08:55 Найти цитируемый пост)
Сейчас мне нужно, чтобы была возможность работать с любыми файлами: doc, txt, html, jpg, gif и т.д. то есть вообще абсолютно любыми..

По идее нужно хранить в базе еще одно поле - тип файла. И при обработке по нему определять что делать с этим файлом.


--------------------
Lost....
PM MAIL MSN   Вверх
Swatch
Дата 1.2.2008, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я уже тоже об этом подумала... 

а как эти файлы в блобы превращать и обратно? smile 
PM MAIL   Вверх
iLoveJava
Дата 2.2.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я думаю можна так

Сохранение в БД
Код

    File f = new File(jFileChooser1.getSelectedFile().getCanonicalFile());
    FileInputStream fis = new FileInputStream(f);
    SerialBlob blob = null;
    try {
        if (f.length() > 5242880){
            jOptionPane1.showMessageDialog(this,"Too large file","Warrning",JOptionPane.ERROR_MESSAGE);
            return;
        }
        byte buff[] = new byte[(int)f.length()];
        fis.read(buff);
        blob = new SerialBlob(buff);
    } catch (SerialException ex1) {
        ex1.printStackTrace();
    } catch (SQLException ex2) {
        ex2.printStackTrace();
    }


можно в бд сохранять имя файла(или расширение) и использовать его вместо "C:\\attachement.jpg"
или 
Код

String path = "C:\\attachement" + ext;


Сохранение на диск
Код

    SerialBlob blob = null;
    FileOutputStream fos = new FileOutputStream("C:\\attachement.jpg");
    try {
     fos.write(blob.getBytes(0, (int)blob.length()));
    } catch (SQLException ex1) {
        ex1.printStackTrace();
    } catch (IOException ex2) {
        ex2.printStackTrace();
    }

PM MAIL   Вверх
Tamerlann
Дата 3.2.2008, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 10.11.2002
Где: Минск, Беларусь

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



Раз уж на то пошло, то файлы можно предварительно архивировать заодно. Хотя вообще, файлам все же место в файловой системе, а не в базе, imo.
--------------------
http://timursdev.blogspot.com/ 
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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