Я хочу загрузить большой файл с максимальным размером 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); ???