Как вставить большие файлы в MySQL db с помощью PHP?

Я хочу загрузить большой файл с максимальным размером 10 МБ в мою базу данных MySQL. Используя .htaccess я изменил собственный лимит загрузки файлов PHP на «10485760» = 10 МБ. Я могу загружать файлы до 10 МБ без каких-либо проблем.

Но я не могу вставить файл в базу данных, если он больше 1 МБ.

Я использую file_get_contents чтобы прочитать все данные файла и передать его в запрос вставки как строку, которая будет вставлена ​​в поле LONGBLOB.

Но файлы размером более 1 МБ не добавляются в базу данных, хотя я могу использовать print_r($_FILES) чтобы убедиться, что файл загружен правильно. Любая помощь будет оценена, и я буду нуждаться в ней в течение следующих 6 часов. Так что, пожалуйста, помогите!

Насколько я знаю, обычно более быстрая и лучшая практика не хранить файл в db, так как он будет очень массированным и замедлит его работу. Лучше всего сделать способ хранения файла в каталоге, а затем просто сохранить расположение файла в db.

Мы делаем это для изображений / pdfs / mpegs и т. Д. В CMS, которые мы работаем, создавая папку для файла с именем из безопасного имени файла и сохраняя имя папки в db. Легко просто записать URL-адрес этого слоя презентации.

Вам нужно будет проверить значение конфигурации MySQL «max_allowed_packet», которое может быть слишком маленьким, чтобы предотвратить появление INSERT (самого большого).

Выполните следующее из командной строки mysql:

 mysql> show variables like 'max_allowed_packet'; 

Убедитесь, что он достаточно большой. Для получения дополнительной информации об этом параметре конфигурации см.

MySQL max_allowed_packet

Это также влияет на mysql_escape_string () и mysql_real_escape_string () в PHP, ограничивая размер создания строки.

Лучший ответ заключается в том, чтобы лучше использовать реализацию, а также работать над этой проблемой. Вы можете прочитать статью здесь . Магазин 10 МБ, 1000 МБ, не имеет значения. Реализация кусков / разрезает файл на несколько небольших частей и хранит их в нескольких рядах. Это помогает при загрузке и извлечении, поэтому память также не становится проблемой.

Некоторые расширения PHP для MySQL имеют проблемы с типами данных LONGBLOB и LONGTEXT. Расширения могут не поддерживать потоки blob (проводя по блоку по одному сегменту за раз), поэтому им приходится публиковать весь объект за один раз.

Поэтому, если ограничение памяти в PHP или ограничение размера пакета MySQL ограничивают размер объекта, который вы можете отправить в базу данных, вам может потребоваться изменить некоторую конфигурацию на PHP или MySQL, чтобы это разрешить.

Вы не сказали, какое расширение PHP вы используете (для MySQL есть не менее трех), и вы не указали какой-либо код, который вы используете, чтобы опубликовать blob в базе данных.

Вы можете использовать функцию LOAD_FILE MySQL для хранения файла, но вы все равно должны подчиняться значению max_allowed_packet и тому факту, что файл должен находиться на том же сервере, что и экземпляр MySQL.

Вы не говорите, какую ошибку вы получаете (используйте mysql_error() чтобы узнать), но я подозреваю, что вы можете получить максимальный размер пакета.

Если это так, вам нужно будет изменить конфигурацию MySQL max_allowed_packet

Вы не говорите, какую ошибку вы получаете (используйте mysql_error (), чтобы узнать), но я подозреваю, что вы можете получить максимальный размер пакета.

Если это так, вам нужно будет изменить конфигурацию MySQL max_allowed_packet

Ну, у меня такая же проблема. И данные не могут быть введены в базу данных базы данных mysql путем chunck в режиме «io»,

 loop for : read $data from file, write $data to blob end loop close file close blob 

Кажется, что решение создает таблицу с многочастными блобами, такими как create table data_details (id int pk auto_increment, chunck_number int not null, dataPart blob); ???