2015-09-12 4 views
0

Я хочу сделать максимально допустимый размер файлов изображений 25 МБ в таблице. Однако я не нашел способа сделать это. Сейчас я использую MEDIUMBLOB, так как его максимальный размер составляет 16 МБ, но я хочу, чтобы он был чуть больше. Так это возможно?При использовании BLOB в MySQL можно ли установить максимальный размер на допустимые файлы изображений?

Я довольно новичок в MySQL, поэтому прошу прощения, если то, что я пытаюсь спросить, кажется неясным.

+1

Этот вопрос был задан здесь раз в газильи. – e4c5

+1

Возможный дубликат [Какова максимальная длина данных, которые я могу разместить в столбце BLOB в MySQL?] (Http://stackoverflow.com/questions/5775571/what-is-the-maximum-length-of-data- i-can-put-in-a-blob-column-in-mysql) – steveluscher

+0

@steveluscher он просит установить пользовательский предел, а не для системы по умолчанию. –

ответ

0

Я бы рекомендовал не хранить изображения в базе данных. Я хотел бы предложить ниже обрабатывать фотографии Если вы хотите сохранить фотографию профиля каждого пользователя при создании учетной записи пользователя - создайте дополнительную таблицу пользовательских полей в базе данных для сохранения имени изображения профиля. - Сначала вставьте другую деталь в базу данных и получите последний вставленный идентификатор (т. Е. Первичный ключ таблицы пользователя). - Загрузите изображение в одну из директорий на сервере и переименуйте это изображение с помощью уникального ключа (например: «profile_pic_» и примиритесь с первичным ключом таблицы пользователя) - Обновите имя изображения в таблице пользователя в базе данных.

0

Создайте таблицу, строки которой представляют возможно 'исключения'

CREATE TABLE exceptions (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    message VARCHAR(255), 
    UNIQUE KEY (id, message) 
); 
INSERT INTO exceptions (1, 'Images must be <=25MB'); 

Определение триггера на вашем столе изображения

Предполагая, что столбец BLOB называется 'данные':

delimiter // 
CREATE TRIGGER assert_image_size BEFORE INSERT ON images 
    FOR EACH ROW 
    BEGIN 
    IF LENGTH(NEW.data) > 25000000 THEN 
     INSERT INTO exceptions (1, 'Images must be <=25MB'); 
    END IF; 
    END; 
// 
delimiter ; 

MySQL будет вызывать дублируемую ключевую ошибку, а сообщение об ошибке будет содержать текст «Изображение слишком большое».

+0

Но серьезно, подтвердите это на уровне приложения. Взламывает хаки. – steveluscher