Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток)Подскажите,пожалуйста как мне вывести имя файла,чтобы при скачивании имя скачанного файла было тем именем,которое задано в базе данных.Вот код файла вывода изображения на экран:
<?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']
?>
Неактивен
Добавьте перед 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\"");
Неактивен
Чего то у меня выводится ошибка:Fatal error: Call to undefined function mime_content_type() in Z:\home\test1.ru\www\bin\get.php on line 23
А что такое $maxage = 86400;?
Неактивен
ну это время, на которое данный файл стоит кэшировать клиенту (из другой оперы, но полезно). 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";
}
}
Неактивен
То есть мне нужно выбрать нужное расширение и вставить этот колд на место того,который вы мне дали?
Неактивен
Нет, это функция, которая из имени файла (у Вас ведь оно есть), выделяет расширение и определяет MIME-тип
Неактивен
Теперь у меня нет ошибки,но изображение тоже не выводится))))
Неактивен
Хотя нет....Ошибка все-таки выводится:Fatal error: Call to undefined function mime_content_type() in Z:\home\test1.ru\www\bin\get.php on line 116
Неактивен
замените вызов mime_content_type на content_type
Неактивен
Отлмчно)))Теперь у меня все сохраняется как надо))))У меня к вам еще один вопросик:а вот если в БД у меня хранятся файлы для GuitarPro с расширением .gtp,то для них подойдет функция content_type?
Неактивен
А еще как мне выводить рисунок в определенном размере,то есть в Бд один размер,а я вывожу в другом?
Неактивен
Ну она выдаст application/octet-stream, что будет считаться просто бинарным файлом - система сама определит. Размер рисунка надо указывать там, где он вставлен в HTML.
Неактивен
А как это примерно будет выглядеть,то есть куда именно вставлять размер?
Неактивен
<img src="/i/logo.gif" width="296" height="107" alt="SQLinfo.ru - Все о MySQL" />
Неактивен
:Но ведб у меня рисунок загружается из БД,и выводится вот так:echo $image['content']
Неактивен
Вы где-то используете данный рисунок, то есть на некоторой HTML-странице стоит ссылка на данный рисунок.
Неактивен
Нет,просто я загружаю рисунок из базы данных на некоторую страницу PHP.И в базе данных один имеет один размер,а на PHP странице я хочу вывести ее в другом размере.Куда добавлять размеры рисунка для вывода?
Неактивен
Попробую другими словами. Страница PHP о которой Вы говорите и рисунок имеют разные URL. Вставка рисунка в страницу производится с помощью тега <img>, в его параметрах указывается размер.
Неактивен
Но у меня нет URL картинки,ведь она загружается из базы данных.То есть получается,что тэг<img>здесь не подходит.....
Неактивен
Никита написал:
Но у меня нет URL картинки,ведь она загружается из базы данных.То есть получается,что тэг<img>здесь не подходит.....
Откройте Вашу страницу PHP в браузере и посмотрите исходный код, что-то типа "Вид" -> "Исходный код страницы".
Если это HTML страница, то в соответствующем месте Вы найдете тег <img>, если нет (т.е. страница не HTML), то там будет абракадабра и указать размер рисунка Вы никак не сможете.
Неактивен
А можно тогда выводить рисунрк как то иначе,или как то иначе сохранять его в бд,чтобы затем можно было бы менять размер рисунка?
Неактивен
Никита написал:
А можно тогда выводить рисунрк как то иначе,или как то иначе сохранять его в бд,чтобы затем можно было бы менять размер рисунка?
То как рисунок хранится роли не играет (в бд или в виде файла).
Всё зависит от того как Вы его выводите. Вы так и не ответили что представляет из себя Ваша страница HTML или нет.
Если это HTML, то там будет тег <img> и ему вы сможете указать размеры.
Если не HTML, то Вы можете сделать вывод в виде HTML и опять же указать размеры тегу <img>.
Неактивен
В виде html у меня не открывается не в одном браузере,если я вывожу только картинку.А если я встраиваю оформление в вииде html кода,то оформление выводится,а вот рисунок выводится в виде набора букв и знаков
Неактивен
Т.е. Ваша страница PHP не является HTML страницей. Иными словами её адрес и есть URL рисунка.
Делайте HTML страницу и вставляйте в неё рисунок с помощью тега <img> указывая нужные Вам размеры.
Неактивен
Я просто не иогу понять как мне вставить рисунок из бд в тег <img>)))
Неактивен