Хранение изображений в MySQL с использованием Java - PullRequest
0 голосов
/ 29 декабря 2011

Я хочу сохранить изображения в базах данных MySQL с помощью Java-апплета или во время выполнения пользователь загрузит изображения.

Как я могу это сделать?

Пожалуйста, помогите мне. Требуется ли иметь какой-либо специальный MySQL на основе Java, или MySQL просто сделает это, загружая содержимое изображения BLOB? Если возможно, приведите пример кода и укажите, как я должен загрузить MySQL на свой компьютер для этой цели.

После этого я хочу отобразить эти изображения из MySQL на веб-странице.

Это действительно возможно?

Как это сделать?

Ответы [ 4 ]

5 голосов
/ 29 декабря 2011

Вы не должны хранить изображения в MySQL. MySQL не предназначен для хранения BLOBs и будет иметь серьезные потери производительности, если вы это сделаете.

Вы можете и должны хранить указатели наизображения, либо на вашем локальном файловом сервере, либо на удаленном сервере (например, Amazon S3).

Если вы действительно хотите сделать это, несмотря на мои предупреждения, вы можете найти пример кода здесь , хотятам же подробно обсуждаются те же предупреждения.

0 голосов
/ 12 октября 2016

Как сказал Джош Смит, вы не должны хранить изображения с использованием BLOB или LONGBLOB в MySQL.Поскольку это сильно влияет на вашу производительность, вы можете сделать это , следуя этому методу .Вместо того, чтобы хранить изображения непосредственно в базе данных, сохраняйте местоположение изображения в базе данных.Поскольку мы сравниваем оба варианта, хранение изображений в базе данных безопасно для целей безопасности.Недостатком является

  1. Если база данных повреждена, невозможно получить извлечение.
  2. Извлечение файлов изображений из базы данных происходит медленно при сравнении с другим вариантом.

ХранениеРасположение файла изображения в БД будет иметь следующие преимущества.

  1. Легко получить.
  2. Если хранится более одного изображения, мы можем легко получить информацию об изображении.
0 голосов
/ 26 ноября 2014
try {
            File image = new File("C:/honda.jpg");
            inputStream = new FileInputStream(image);
            connection = getConnection();
            statement = connection
                    .prepareStatement("insert into trn_imgs(img_title, img_data) "
                            + "values(?,?)");
            statement.setString(1, "Honda Car");
            statement.setBinaryStream(2, (InputStream) inputStream,
                    (int) (image.length()));

            statement.executeUpdate();
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: - " + e);
        } catch (SQLException e) {
            System.out.println("SQLException: - " + e);
        }
0 голосов
/ 29 декабря 2011

вы можете использовать setBinaryStream() в Java для хранения изображений в blob столбце типа данных mysql

File image = new File("C:/image.jpg");
PrepareStatement psmnt = connection.prepareStatement
("insert into save_image(image) "+ "values(?)");

FileInputStream fis = new FileInputStream(image);
psmnt.setBinaryStream(3, (InputStream)fis, (int)(image.length()));
/* executeUpdate() method execute specified sql query. Here this query 
insert data and image  */ 
int s = psmnt.executeUpdate();

См. Учебник ниже Как вставить изображение в MySQL с помощью Java-программы

...