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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение и отображение изображений на сайте 
:(
    Опции темы
ivanmakedonski
Дата 14.6.2014, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Мне нужно реализовать сохранение и отображение изображений на сайте. За основу взят компонент PrimeFaces - FileUpload - Single. Не знаю как реализовать бек-энд, прочитал мануал http://spec-zone.ru/RU/Java/Tutorials/2d/i.../saveimage.html , вот что надумал, но не работает 
Код
@ManagedBean
public class FileUploadView extends Component {

    private UploadedFile file;

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

    public void handleFileUpload(FileUploadEvent event) {
        try {
                BufferedImage bufferedImage = ImageIO.read(file);
                File outputfile = new File("saved.png");
                ImageIO.write(bufferedImage, "png", outputfile);
            } catch (IOException e) {
            }
        FacesMessage message = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

}

Ругается на участок кода 
Код
BufferedImage bufferedImage = ImageIO.read(file);

no suitable method found to read(UploadedFile) - не может конвертировать UploadedFile в File.

Нужно переводить в двоичный формат? Еще интересует как указывать путь сохранения для файла.

Спасибо.
PM MAIL   Вверх
Pawl
Дата 14.6.2014, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проще всего воспользоваться гугловской библиотекой commons-io:
Код

File outputfile = new File("saved.png");
FileUtils.copyInputStreamToFile(uploadedFile.getInputStream(), outputfile);

Можно еще посмотреть в сторону java.nio из JDK 7, а именно, интерфейсов Paths, Path и класса Files.
Цитата(ivanmakedonski @  14.6.2014,  01:21 Найти цитируемый пост)
Еще интересует как указывать путь сохранения для файла.

А в чём проблема? указываете, куда надо и сохраняете... Поэкспериментируйте с разными вариантами, потом поищите, где создался файл, так и определитесь. smile


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
ivanmakedonski
Дата 14.6.2014, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо.
PM MAIL   Вверх
ivanmakedonski
Дата 14.6.2014, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хочу реализовать механизм добавления/отображения объявления. Сейчас такая ситуация - при добавлении объявления изображения сохраняются на файловую систему, а остальные данные сохраняются в бд, как можно связать их вместе для отображения на странице? 
Есть мысль добавить в бд отдельную связующую колонку, в нее добавлять числовые значения, а при добавлении объявления возвращать наибольшее значение, инкрементировать его и передавать обратно в бд на запись предварительно создавая уникальную папку равную значению в которой будут сохранены добавленые изображения. Соответственно вытаскивать на странице через бин, а при отображении страниц в пути до изображения добавлять нужный идентификатор. Тогда как быть если файлы загрузили, а сообщение отменили?
Возможно Вы подскажете более предпочтительный вариант. Заранее спасибо.
PM MAIL   Вверх
Pawl
Дата 16.6.2014, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот, почитайте эту дискуссию.
Там есть совет:
Цитата

сохранять в базе ссылки на файлы или называть файлы по значением ключей. Причина: web-сервер и ОС сможет кэшировать эти данные, что достаточно существенно снижает нагрузку.

Возможно, это то, что вам надо.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
ivanmakedonski
Дата 24.6.2014, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть коллекция бин-объектов
Код
ArrayList<Image> images; //Image объект

состоящая из
Код

//часть контроллера наполняющая ArrayList<Image> images;
while (rs.next()) {
                Image image = new Image();
                image.setId(rs.getInt("id"));
                image.setUser_id(rs.getInt("user_id"));
                image.setLot_id(rs.getInt("lot_id"));
                image.setImage(rs.getBytes("image"));
                
                images.add(image);
            }

нужно реализовать выборку из коллекции images в коллекцию selectedImages через lot_id, как это сделать? Вот на что хватило - 
Код

public ArrayList<Image> getImagesById(int id) {

        ArrayList<Image> selectedImages = new ArrayList<>();
        
        if(true){         //тут условие, если images.getImage.getLotId = id; - как реализовать эту строку? нужно вытянуть из коллекции конкретный объект Image для сравнения
            selectedImages.add(image);
        }
                          
        return selectedImages;
    }

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.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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