Solenko
Новичок
Извлечение файла из базы.
Здравствуйте.
Понимаю, что эта тема уже всем изрядно надоела, но на поиск просьба не посылать -- пользовался.
Проблеммы заключается в следующем: файл сохранятся в базу нормально, а вот при извлечении и отдаче пользователю оказывается, что не хватает нескольких десятков байт.
Сохраняю файл в базу так:
Извлекатя пытаюсь так:
Поле file_data имеет тип LONGBLOB, а размер файлов не привышает 1 Mb.
Подскажите что я сделал не так и в чем причина "недостачи" байтов.
П.С. Еще одна просьба, не превращать тему в дискуссию по поводу целесообразности хранения хранения файлов в базе.
Здравствуйте.
Понимаю, что эта тема уже всем изрядно надоела, но на поиск просьба не посылать -- пользовался.
Проблеммы заключается в следующем: файл сохранятся в базу нормально, а вот при извлечении и отдаче пользователю оказывается, что не хватает нескольких десятков байт.
Сохраняю файл в базу так:
PHP:
$query = "INSERT INTO #__userfiles (file_caption ,file_name, file_size, file_data, user_id, upload_date) VALUES ";
$query .= "('".$caption."', '".$_FILES['up_file']['name']."',".$_FILES['up_file']['size'].", ";
$query .="'".base64_encode(fread(fopen($_FILES['up_file']['tmp_name'], 'rb'), filesize($_FILES['up_file']['tmp_name'])))."', ".$my->id.", now())";
$database->setQuery($query);
$database->query();
PHP:
$query = "select file_data, file_name FROM #__userfiles WHERE id = ".$id;
$database->setQuery($query);
$database->loadObject($r);
header("Content-type: application/octet-stream");
header("Content-Disposition: inline; filename=\"".$r->file_name."\"");
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
echo base64_decode($r->file_data);
Подскажите что я сделал не так и в чем причина "недостачи" байтов.
П.С. Еще одна просьба, не превращать тему в дискуссию по поводу целесообразности хранения хранения файлов в базе.
