LINUX.ORG.RU

Сохранение и отображение изображений на сайте

 , ,


0

1

Мне нужно реализовать сохранение и отображение изображений на сайте. За основу взят компонент PrimeFaces - FileUpload - Single. Не знаю как реализовать бек-энд, прочитал мануал http://spec-zone.ru/RU/Java/Tutorials/2d/images/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.

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

Спасибо.


Хочу реализовать механизм добавления/отображения объявления. Сейчас такая ситуация - при добавлении объявления изображения сохраняются на файловую систему, а остальные данные сохраняются в бд, как можно связать их вместе для отображения на странице? Есть мысль добавить в бд отдельную связующую колонку, в нее добавлять числовые значения, а при добавлении объявления возвращать наибольшее значение, инкрементировать его и передавать обратно в бд на запись предварительно создавая уникальную папку равную значению в которой будут сохранены добавленые изображения. Соответственно вытаскивать на странице через бин, а при отображении страниц в пути до изображения добавлять нужный идентификатор. Тогда как быть если файлы загрузили, а сообщение отменили? Возможно Вы подскажете более предпочтительный вариант. Заранее спасибо.

Andreu
() автор топика
Ответ на: комментарий от Andreu

Создай в бд таблицы messages (description, etc.) и pictures. У сообщения сделай поле связанного рисунка, где будет запись на примари кей соответствующего рисунка. У рисунка должно быть поле ссылки на место хранения файла изображения. Учти, что в некоторых случаях может быть проще хранить рисунки в базе данных в виде блоба. Кроме того рекомендую продумать переименование загружаемых файлов, если хранишь на жестком диске.

TheKnight ★★★
()
Ответ на: комментарий от TheKnight

Прочитал что лучше хранить в блобах если размер изображения до 1мб. Хранение в блобах упрощает задачу сохранения и отображения объявлений, но на 1 объявление будет возможность добавить до 10 изображений, если фото с цифровика, то одно изображение может весить до 5мб, получается 10 изображений = 50 мб данных в памяти на 1 объявление, а если объявлений например 1000 это 50 гигабайт размер базы данных. Можно установить ограничение на размер загружаемых изображений, но пользователям такое не понравится. При таких размерах имеет значение дальше думать над хранением на дисковой системе или реализовывать хранение через блобы?

Andreu
() автор топика
Ответ на: комментарий от Andreu

Почитал форум, рекомендуют хранить на ФС, а в БД хранить линки на файлы, если знакомы с таким механизмом, подскажите как такое реализовывать, буду благодарен ссылке на инфу.

Andreu
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.