Преамбула:
есть две машины - на машине 1 гоняется в реальном времени нечто,
генерящее картинки и пихающее их в базу данных. База данных тоже
на машине 1. В то же время на машине 2 висит веб-сервер и пхп
приложение может обращаться в базу данных (и только туда)
на машине 1
Задача: Как правильно давать пользователю ссылку, чтобы он мог
наиудобнешим способом получить картинку, когда ему надо
Попытки реализации:
(1)
//pull the picture
$result = mysql_query($query) or die ("Error: can not select data");
if ($result) {
$num = mysql_numrows($result);
$i=0;
while ($i < $num) {
$pngfile=mysql_result($result,$i,"bin_data");
$i++;
}
$pnglength = strlen($pngfile); //the length of file
//header for browser
$h= "Content-Type: image/png\n";
$h.="Content-Length: $pnglength\n";
$h.="Content-Disposition: attachment; filename=$filename\n";
header($h);
//file itself
print $pngfile;
}
// Free resultset
mysql_free_result($result);
Недостатки подхода в том, что когда кликнет кто-то на ссылке и
данный пхп запустится, то броузер сразу будет искать приложение,
которое этот поток может открыть. Далеко не всегда пользователь хочет
запускать что-то еще крому броузера или у него вообще может не
оказаться смотрелки.
(2) Получить картинку из базы данных и сохранить ее, потом
сгенерировать правильную ссылку и выдать хтмл со ссылкой на только
что сохраненный файл. Недостаток очевиден - надо что-то писать на
машине 2, а это вопросы привилегий!
Ниже код для сохранения картинки (с купюрами)
//pull the picture
$result = mysql_query($query);
if ($result) {
$num = mysql_numrows($result);
$i=0;
while ($i < $num) {
$giffile=mysql_result($result,$i,"bin_data");
$i++;
}
}
else { return 1; } //error
$giflength = strlen($giffile); //the length of file
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
return 3;
}
if (fwrite($handle, $giffile) == False) {
echo "Cannot write to file ($filename)";
return 2;
}
fclose($handle);
}
// Free resultset
mysql_free_result($result);
Наверняка это более-менее стандартная задача!
Какие есть еще подходы!!! ПОМОГИТЕ!
Ответ на:
комментарий
от no-dashi
Ответ на:
комментарий
от roller
Ответ на:
комментарий
от AngryElf

Ответ на:
комментарий
от no-dashi

Ответ на:
комментарий
от atoku
Ответ на:
комментарий
от AngryElf

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Состоялся релиз mailutils 3.2. (2017)
- Форум Неправильное выделение памяти (2006)
- Форум Выдержит ли SQLite нагрузку уровня linux.org.ru? (2022)
- Форум PHP+Oracle (2003)
- Форум PHP+Oracle9 (2003)
- Форум PHP + Mysql (2005)
- Форум Mysql PHP (2006)
- Форум PHP + MySql (2006)
- Форум PHP + MySQL (2006)
- Форум PHP + MySQL (2003)