Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52

Из LONGBLOB (MySQL) pdf / xlsx сохранить в папку

10.10.2017, 22:49. Показов 1841. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Первоначально файл pdf загружается и хранится в БД в поле FILE_LOADED (LONGBLOB, MySQL)
Выгружаю файл из БД в папку на диске - он успешно создаётся.
Размер совпадает с тем, который загружал в БД.
Но, когда его открываю - пустой лист. Что делаю неправильно?
Подозреваю, что скорее всего проблема в том, что не правильно читаю файл из БД, т.к. пробовал его загружать в БД в т.ч. вручную в dbForgeStudio for MySql.

1. Первоначально файл загружаю в БД в поле LONGBLOB (MySQL)
Стандартно получаю файлы из формы:
HTML5
1
2
3
<form style="display: none" enctype="multipart/form-data" method="POST" action="">
     <input id=reportopen  type="file" name="reportopen[]" multiple="multiple" onchange="this.form.submit()" accept="application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"/>
</form>
Сохраняю файлы в БД в поле FILE_LOADED (LONGBLOB):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
... подключаюсь к базе и т.п.
for ($i = 0; $i < count($_FILES['reportopen']['name']); $i++){
        $myftmpdir=$_FILES['reportopen']['tmp_name'][$i];//считываю файл из временной папки
        //слешую и записываю в переменную содержимое файла
        $myfcontent= addslashes(file_get_contents($myftmpdir));
        $query = "INSERT INTO db_files (FILE_LOADED) VALUES (:FDATA)";
        try{
                $result = $db->prepare($query)or die("Connection Error: ".($db->errorCode()));
                $result->bindValue(':FDATA', $myfcontent, PDO::PARAM_LOB);
                //$result->bindValue(':FDATA', $myfcontent, PDO::PARAM_STR);//пробовал и с таким параметром
                $result->execute() or die("Connection Error: ".($db->errorCode()));
        }
        catch (PDOException $e){
              return($e->getMessage());
        }
Забираю файл из базы в папку
PHP
1
2
3
4
5
6
7
8
9
10
11
... подключаюсь к базе и т.п.
$query="SELECT FILE_LOADED FROM db_files WHERE ID_FILE=123 LIMIT 1;";
$result = $db->prepare($query)or die("Connection Error: ".($db->errorCode()));
$result->execute() or die("Connection Error: ".($db->errorCode()));
$row = $result->fetch();
 
$fp="C:\ .... путь к папке...\МойФайл.pdf";
//выгружаю файл из поля FILE_LOADED базы в заданную папку в файл МойФайл.pdf
file_put_contents ($fp, $row['FILE_LOADED']);//м.б. неправильно считываю файл?
//Файл создаётся. Размер, который показан в проводнике не нулевой (похож на тот, который загружал в БД).
//Открываю файл - показывает пустую страницу. Аналогично с xlsx файлами.
P.S.: Про вариант решения с хранением не файла а ссылки на него знаю/умею. Для моего случая не подходит.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2017, 22:49
Ответы с готовыми решениями:

Извлечение файла pdf из Mysql (longblob)
Как скачать файл &quot;.PDF&quot; из Базы Данных MySql (longblob) средствами C# ?

Poi|Android studio: как сохранить ехсеl файл формата xlsx в папку assets?
Здравствуйте, как сохранить ехсеl файл формата xlsx в папку assets (Ну или в любую другую папку с которой можно прочитать)

Вывод содержимое LONGBLOB (не картинки, а doc, excel,pdf и т.д) на странице через PHP
Доброго времени суток! У меня есть таблица БД на phpmyadmin. И там есть в полях ссылки на doc, excel, pdf и т.д LONGBLOB. Я вывожу данные...

2
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
10.10.2017, 23:55
NewEd, addslashes надо убрать
1
4 / 4 / 2
Регистрация: 11.10.2007
Сообщений: 52
11.10.2017, 08:34  [ТС]
Спасибо!!! Без addslashes заработало.
P.S. На каком-то этапе разработки у меня было без addslashes, но почему-то тогда это генерировало ошибки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.10.2017, 08:34
Помогаю со студенческими работами здесь

Перенос LONGBLOB из одной таблицы в другую (MYSQL)
Помогите пож. Мож кто знает Делаю в одну таблицу SELECT Потом во вторую INSERT с этими же значениями. echo...

Рабочие файлы DOCX, XLSX, PDF и т.д. зашифрованы расширением vault
ПОМОГИТЕ РАСШИФРОВАТЬ ФАЙЛЫ. Сегодня утром на рабочем столе обнаружил файлы vault.txt, vault.key. При этом файле txt ссылает на сайт и...

Сохранить КОПИЮ файла в формате .xlsx
Как сохранить копию файла по определенном пути без макросов. Такой пример не удачный, так как файл .xlsx, который якобы сохранился, при...

Сканирование определённой папки на наличие XLSX-файлов и пересохранение найденных в другую папку
Добрый день. Задача у меня стоит следующая, нужно просканировать определенную папку на наличие *.xlsx файлов, после этого открывать каждый...

Как открыть файл xlsx и сохранить в txt?
Написать консольное windows приложение на Visual C++ со следующим функционалом: - на вход программы (в виде параметров командной строки)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru