SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.01.2008 19:48:06

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Вывод рисунков из БД

Доброго времени суток)Подскажите,пожалуйста как мне вывести имя файла,чтобы при скачивании имя скачанного файла было тем именем,которое задано в базе данных.Вот код файла вывода изображения на экран:
<?php
  // Устанавливаем соединение с базой данных
  require_once("config.php");


  // Извлекаем MP3-файл из базы данных
  $query = "SELECT * FROM image
            WHERE id_image = $_GET[id_image]";
  $img = mysql_query($query);
  if(!$img) exit(mysql_error());
  $image = mysql_fetch_assoc($img);

echo $image['content']
?>

Неактивен

 

#2 22.01.2008 19:53:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

Добавьте перед echo:
       $filename = $image['name']; // или как извлечь имя файла
       $maxage = 86400;
       header("Cache-Control: max-age=$maxage");
       header("Expires: ". date('r', time() + $maxage));
       header("Content-Type: ".mime_content_type($filename));
       header("Content-Length: ".strlen($image['content']));
       header("Content-Disposition: filename=\"$filename\"");

Неактивен

 

#3 22.01.2008 20:03:21

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Чего то у меня выводится ошибка:Fatal error: Call to undefined function mime_content_type() in Z:\home\test1.ru\www\bin\get.php on line 23
А что такое $maxage = 86400;?

Неактивен

 

#4 22.01.2008 20:09:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

ну это время, на которое данный файл стоит кэшировать клиенту (из другой оперы, но полезно). 86400 - сутки в секундах

mime_content_type есть в php начиная с некоторой версии. Используйте функцию content_type:

function content_type($filename) {

// usage of built in function mime_content_type(); available in PHP>4.3.0
// is still very configuration dependent
//  if(is_callable("mime_content_type")) {
//    return mime_content_type($filename);
//  }
  $extension = strtolower(array_shift(array_reverse(explode(".",$filename))));
    // list taken from apache-mime.types
$mime_types = array(
  "html" => "text/html",
  "txt" => "text/plain",
  "bmp" => "image/bmp",
  "gif" => "image/gif",
  "jpg" => "image/jpeg",
  "jpe" => "image/jpeg",
  "png" => "image/png",
  "ico" => "image/x-icon",
  "swf" => "application/x-shockwave-flash",
  "xml" => "text/xml",
  "xsl" => "text/xml",
  "doc" => "application/msword",
  "xls" => "application/msexcel",
  "xlc" => "application/msexcel",
  "xll" => "application/msexcel",
  "xlm" => "application/msexcel",
  "xlw" => "application/msexcel",
  "pdf" => "application/pdf",
  "ps"  => "application/postscript",
  "eps" => "application/postscript",
  "ai"  => "application/postscript",
  "asp" => "application/x-asp",
  "bak" => "application/x-backup",
  "bz2" => "application/x-bzip2",
  "cgi" => "application/x-cgi",
  "tgz" => "application/x-compressed-tar",
  "core" => "application/x-core-file",
  "csh" => "application/x-cs",
  "dvi" => "application/x-dvi",
  "exe" => "application/x-executable",
  "gtar" => "application/x-gtar",
  "xhtml" => "application/xhtml+xml",
  "xht" => "application/xhtml+xml",
  "class" => "application/x-java=byte-code",
  "jar" => "application/x-jar",
  "js" => "application/x-javascript",
  "pl" => "application/x-perl",
  "perl" => "application/x-perl",
  "php" => "application/x-php",
  "php3" => "application/x-php",
  "php4" => "application/x-php",
  "pyc" => "application/x-python-bytecode",
  "py"  => "application/x-python",
  "rar" => "application/x-rar-compressed",
  "rpm" => "application/x-rpm",
  "sh"  => "application/x-sh",
  "tar" => "application/x-tar",
  "tcl" => "application/tcl",
  "tex" => "application/tex",
  "man" => "application/x-troff-man",
  "zip" => "application/zip",
  "ac3" => "audio",
  "au"  => "audio/basic",
  "snd"  => "audio/basic",
  "mid" => "audio/midi",
  "midi" => "audio/midi",
  "kar" => "audio/midi",
  "mpga" => "audio/mpeg",
  "mp2" => "audio/mpeg",
  "mp3" => "audio/mpeg",
  "ogg" => "audio/x-ogg",
  "ra"  => "audio/x-realaudio",
  "wav" => "audio/x-wav",
  "tif" => "image/tiff",
  "tiff" => "image/tiff",
  "djv" => "image/vnd.djvu",
  "djvu" => "image/vnd.djvu",
  "rtf" => "text/rtf",
  "sgml" => "text/sgml",
  "sgm" => "text/sgml",
  "avi" => "video/x-msvideo");

  if(isset($mime_types[$extension])) {
    return $mime_types[$extension];
  }
  else {
    return "application/octet-stream";
  }
}

Неактивен

 

#5 22.01.2008 20:16:20

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

То есть мне нужно выбрать нужное расширение и вставить этот колд на место того,который вы мне дали?

Неактивен

 

#6 22.01.2008 20:17:47

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

Нет, это функция, которая из имени файла (у Вас ведь оно есть), выделяет расширение и определяет MIME-тип

Неактивен

 

#7 22.01.2008 20:20:49

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Теперь у меня нет ошибки,но изображение тоже не выводится))))

Неактивен

 

#8 22.01.2008 20:30:38

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Хотя нет....Ошибка все-таки выводится:Fatal error: Call to undefined function mime_content_type() in Z:\home\test1.ru\www\bin\get.php on line 116

Неактивен

 

#9 22.01.2008 20:41:35

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

замените вызов mime_content_type на content_type

Неактивен

 

#10 22.01.2008 20:46:34

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Отлмчно)))Теперь у меня все сохраняется как надо))))У меня к вам еще один вопросик:а вот если в БД у меня хранятся файлы для GuitarPro с расширением .gtp,то для них подойдет функция content_type?

Неактивен

 

#11 22.01.2008 20:48:01

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

А еще как мне выводить рисунок в определенном размере,то есть в Бд один размер,а я вывожу в другом?

Неактивен

 

#12 22.01.2008 21:04:04

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

Ну она выдаст application/octet-stream, что будет считаться просто бинарным файлом - система сама определит. Размер рисунка надо указывать там, где он вставлен в HTML.

Неактивен

 

#13 22.01.2008 21:09:03

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

А как это примерно будет выглядеть,то есть куда именно вставлять размер?

Неактивен

 

#14 22.01.2008 21:38:40

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

<img src="/i/logo.gif" width="296" height="107" alt="SQLinfo.ru - Все о MySQL" />

Неактивен

 

#15 23.01.2008 07:32:56

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

:Но ведб у меня рисунок загружается из БД,и выводится вот так:echo $image['content']

Неактивен

 

#16 23.01.2008 10:33:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

Вы где-то используете данный рисунок, то есть на некоторой HTML-странице стоит ссылка на данный рисунок.

Неактивен

 

#17 23.01.2008 10:50:23

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Нет,просто я загружаю рисунок из базы данных на некоторую страницу PHP.И в базе данных один имеет один размер,а на PHP странице я хочу вывести ее в другом размере.Куда добавлять размеры рисунка для вывода?

Неактивен

 

#18 23.01.2008 11:00:41

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Вывод рисунков из БД

Попробую другими словами. Страница PHP о которой Вы говорите и рисунок имеют разные URL. Вставка рисунка в страницу производится с помощью тега <img>, в его параметрах указывается размер.

Неактивен

 

#19 23.01.2008 11:58:14

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Но у меня нет URL картинки,ведь она загружается из базы данных.То есть получается,что тэг<img>здесь не подходит.....

Неактивен

 

#20 23.01.2008 13:52:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Вывод рисунков из БД

Никита написал:

Но у меня нет URL картинки,ведь она загружается из базы данных.То есть получается,что тэг<img>здесь не подходит.....

Откройте Вашу страницу PHP в браузере и посмотрите исходный код, что-то типа "Вид" -> "Исходный код страницы".

Если это HTML страница, то в соответствующем месте Вы найдете тег <img>, если нет (т.е. страница не HTML), то там будет абракадабра и указать размер рисунка Вы никак не сможете.

Неактивен

 

#21 23.01.2008 14:36:05

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

А можно тогда выводить рисунрк как то иначе,или как то иначе сохранять его в бд,чтобы затем можно было бы менять размер рисунка?

Неактивен

 

#22 23.01.2008 14:57:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Вывод рисунков из БД

Никита написал:

А можно тогда выводить рисунрк как то иначе,или как то иначе сохранять его в бд,чтобы затем можно было бы менять размер рисунка?

То как рисунок хранится роли не играет (в бд или в виде файла).
Всё зависит от того как Вы его выводите. Вы так и не ответили что представляет из себя Ваша страница HTML или нет.
Если это HTML, то там будет тег <img> и ему вы сможете указать размеры.
Если не HTML, то Вы можете сделать вывод в виде HTML и опять же указать размеры тегу <img>.

Неактивен

 

#23 23.01.2008 16:31:00

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

В виде html у меня не открывается не в одном браузере,если я вывожу только картинку.А если я встраиваю оформление в вииде html кода,то оформление выводится,а вот рисунок выводится в виде набора букв и знаков

Неактивен

 

#24 23.01.2008 17:31:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Вывод рисунков из БД

Т.е. Ваша страница PHP не является HTML страницей. Иными словами её адрес и есть URL рисунка.
Делайте HTML страницу и вставляйте в неё рисунок с помощью тега <img> указывая нужные Вам размеры.

Неактивен

 

#25 23.01.2008 18:34:36

Никита
Завсегдатай
Откуда: Тюмень
Зарегистрирован: 15.11.2007
Сообщений: 73

Re: Вывод рисунков из БД

Я просто не иогу понять как мне вставить рисунок из бд в тег <img>)))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson