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

Поиск:

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


Опытный
**


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

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



Добрый день.

Делаю upload файла и сохраняю его в БД, при этом его еще надо сохранить в поддиректорию приложения... 

upload файла:
Код

public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {

        if ( form != null ) {

            DynaActionForm df = (DynaActionForm) form;
            FormFile file   = (FormFile) df.get("file");
            String title     = (String)   df.get("title");
            Date data = new Date();
            HttpSession session = request.getSession();
            user author = (user)session.getAttribute("USER");
            Blob blob = Hibernate.createBlob (file.getInputStream());
            byte[] f = new byte[(int) blob.length()];

            doc doc = new doc();
            doc.setTitle(title);
            doc.setDate(data);
            doc.setUser_id(author);
            doc.setAttachment(f);
            HibernateUtil.Save(doc);
            
        }

        return (mapping.findForward("main"));
     }


Это нормально работает и в БД все сохраняется... вопрос в том, как сделать сохранение в поддиректорию программы??? 

и еще, можно ли потом файл открыть в соответствующем редакторе... ну, как бывает, нажимаешь на ссылку, а тебе предлагают открыть/сохранить на диск... как это можно реализовать????
PM MAIL   Вверх
Samotnik
Дата 12.4.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  12.4.2008,  12:12 Найти цитируемый пост)
вопрос в том, как сделать сохранение в поддиректорию программы??? 

а обычным спопобом (не через хибернейт)  пробывали ?   

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


Опытный
**


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

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



Я понимаю, что обычным... только не совсем понимаю, как...  smile 
PM MAIL   Вверх
Samotnik
Дата 13.4.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  13.4.2008,  08:35 Найти цитируемый пост)
Я понимаю, что обычным... только не совсем понимаю, как...  

Взять нужное  содержимое (к примеру оно будет находится в  String  tmp ),  написать что то вроде 
Код

FileOutputStream fos = new  FileOutputStream("D:\\work\\project\\bla-bla")
for(int i=0; tmp.length;i++ )
fos.write(tmp[i]);

Ну т.е.  попробуйте через обычную работу с файлом.  
PM MAIL   Вверх
Swatch
Дата 13.4.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



файл сохранился... спасибо за совет!smile 

только возник вопрос, как определить поддиректорию приложения???
PM MAIL   Вверх
Samotnik
Дата 13.4.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  13.4.2008,  20:34 Найти цитируемый пост)
только возник вопрос, как определить поддиректорию приложения???

в смысле ?
вы про это ?
Код

File f  = new File ("ваш файл");
f.getName();   //имя 
f.getPath(); //путь 
f.getAbsolutePath();


PM MAIL   Вверх
Swatch
Дата 13.4.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



теперь еще и с открытием файла проблемы... открывать, открывает, но файлы пустые:(

вот открытие:
Код

Long id = null;

        id = ((MainForm) actionForm).getId();
        doc doc = new doc();
        HibernateUtil.Load(doc, id);

        byte[] file = doc.getAttachment();
        File f = File.createTempFile("attachement", doc.getExtension());
        FileOutputStream fos = new FileOutputStream(f);
        try {
            fos.write(file);
        } catch (IOException ex2) {
            ex2.printStackTrace();
        }
        fos.close();
        String file_name = f.getCanonicalPath();         
        Runtime.getRuntime().exec("cmd /C " + "\"" + file_name + "\"");
        f.deleteOnExit();
        return (actionMapping.findForward("main"));


в чем может быть дело???

Добавлено через 2 минуты и 40 секунд
эммм.. нет, мне надо не путь до файла определить, а путь к поддиректории программы, куда сохранить файл, то есть когда я делаю:
Код

FileOutputStream fos = new  FileOutputStream(путь к поддиректории программы... как найти???);

PM MAIL   Вверх
Samotnik
Дата 14.4.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  13.4.2008,  21:06 Найти цитируемый пост)
теперь еще и с открытием файла проблемы... открывать, открывает, но файлы пустые:(

не понял,  что тебе тут конкретно нужно ?
ведь, этой строкой  ты хочеш что то записать в файл   
Код

 FileOutputStream fos = new FileOutputStream(f);

а он всегда будет либо перезаписываться, либо  создаваться, если его не существует ! 
Цитата(Swatch @  13.4.2008,  21:06 Найти цитируемый пост)
эммм.. нет, мне надо не путь до файла определить, а путь к поддиректории программы, куда сохранить файл, то есть когда я делаю:

опять не понял ...  Ведь это ВАШ проект, и вы сохраняете туда, куда ВЫ  захотите!  Обычно это делается в папочку типа..  resources
Обьясни поподробнее,  что значит "как  найти путь"
PM MAIL   Вверх
Swatch
Дата 14.4.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ФАйл записывается нормально, но когда я его потом открываю, то там вместо его содержимого только квадратики...

на счет сохранения. все понятно, что сохраняю в resources, например... только ведь путь надо писать относительный к этим resources... ведь если я напишу c://.../resources/, то не факт, что если программу перенести на другой комп, она будет работать... вот я и не знаю, как задать относительный путь просто к папке resources, которая в проекте лежит... то есть надо как-то ориентироваться на проект, только я не совсем понимаю, как...
PM MAIL   Вверх
Samotnik
Дата 14.4.2008, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  14.4.2008,  13:17 Найти цитируемый пост)
а счет сохранения. все понятно, что сохраняю в resources, например... только ведь путь надо писать относительный к этим resources... ведь если я напишу c://.../resources/, то не факт, что если программу перенести на другой комп, она будет работать... вот я и не знаю, как задать относительный путь просто к папке resources, которая в проекте лежит... то есть надо как-то ориентироваться на проект, только я не совсем понимаю, как... 

да, правилно, конечно же  нужно писать относительный путь..   
ДОПУСТИМ,  у тебя такая ерерархия проекта :
Код

D:\\ptroject\\MyLoveProject\\java\\ src\\MyFile.java  (тот   java   файл  в которм  ты  работаеш с   txt   файолм  (запись, чтение))
                           \\resuorces\\file resources\\ Need.txt (тот который сюда нужно положить)
                           \\tests\\
                                             ну  и т.д.

Значіт относітельный путь  будет 
Код

..\\..\\resuorces\\file resources\\ Need.txt

..    -  это   поднятся  на уровень вверх.   Т.е.  если правильно задеплоится  проект, то иеррархия  должна остаться,  и обсолютно  пофигу  на каком диске и в какой папке будет лежать проект,  папки java  resuorces  tests   остануться  так как есть ...

Добавлено @ 13:34
Цитата(Swatch @  14.4.2008,  13:17 Найти цитируемый пост)
но когда я его потом открываю, то там вместо его содержимого только квадратики...

я не вижу, когда  где файл открывается  для чтения  smile 

Это сообщение отредактировал(а) Samotnik - 14.4.2008, 13:37
PM MAIL   Вверх
Swatch
Дата 14.4.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хммм... что-то у меня не находит папку resuorces.... может потому, что у меня нет папки java, а иерархия такая:
d://MyProject//src//myapp//
                     //resuorces//
                     //web//web-inf
PM MAIL   Вверх
Samotnik
Дата 14.4.2008, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Цитата(Swatch @  14.4.2008,  14:26 Найти цитируемый пост)
может потому, что у меня нет папки java, а иерархия такая:

ну конечно, я же пример написал!   smile 

Цитата(Swatch @  14.4.2008,  14:26 Найти цитируемый пост)
d://MyProject//src//myapp//
                     //resuorces//
                     //web//web-inf 

это твоя  иерархия ???
где лежит  .java  класс, который будет проводить манипуляции  с  .txt файлом (чтение, запись, и .т.д)  ?    И где лежит сам  .txt  файл ?
выложи полную иерархию !

Добавлено через 7 минут и 12 секунд
Значит если файл   .java     лежит  в d://MyProject//src//myapp//   а   .txt    лежит в d://MyProject//resuorces//  
то будет выглядеть доступ вот так : 
Код

..\\..\\resuorces\\



Это сообщение отредактировал(а) Samotnik - 14.4.2008, 14:29
PM MAIL   Вверх
Swatch
Дата 14.4.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



d://MyProject//src//com//myapp//logic//classAction.java - это мой класс.
сам файлик, который я добавляю в БД, может лежать где угодно...

d://MyProject//resuorces// - сюда хочу сохранять файлики...


PM MAIL   Вверх
Samotnik
Дата 14.4.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

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



Swatch, для  этой  иерархии,  в классе  classAction.java ,  нужно прописать такой путь, при открытии  файла, который лежит в d://MyProject//resuorces//
..\\..\\..\\..\\resuorces\\
PM MAIL   Вверх
Swatch
Дата 14.4.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Почему-то, хоть сколько FileOutputStream-у рисуй ..\\..\\..\\..\\, все равно складывается файлик в с://. не знаю, в чем дело....

Добавлено через 8 минут и 59 секунд
а если писать 
Код

FileOutputStream fos = new  FileOutputStream(title + extension);


то файл сохраниться в c:\\Tomcat\\bin
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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