#php #jquery #ajax #image
#php #jquery #ajax #изображение
Вопрос:
У меня есть функция php, которая вызывается функцией jquery. Эта функция jquery по существу разместит изображение на странице. Мне трудно заставить это работать правильно. Я пытаюсь определить, в чем может заключаться проблема… Мое текущее мышление заключается в том, что я неправильно отправляю данные обратно в свою функцию jquery. Вот как я получаю изображение
if(mysql_query("insert into Personal_Photos (Email, Pics) values('$email', '$data')"))
{
$query="select Pics, MAX(ID) from Personal_Photos where Email='$email'";
$result=mysql_query($query) or die("Error: ".mysql_error());
$row=mysql_fetch_array($result);
echo '<img src="data:image/jpeg;base64'.base64_encode($row['Pics']).'"/>';
}
Ключевая строка находится прямо здесь…
echo '<img src="data:image/jpeg;base64,'.base64_encode($row['Pics']).'"/>';
Мне интересно, делаю ли я это неправильно? Как вы это делаете? Есть ли лучший способ сделать это. Если вы заметили что-то еще неправильное в моем коде, я определенно был бы признателен за критику.
Комментарии:
1. зачем хранить изображения в базе данных? почему бы не сохранить их в виде файлов?
2. По сути, это своего рода доказательство концепции. У нас нет доступа ко всем папкам на наших серверах, и нам не хотелось возиться с ЭТИМ, чтобы предоставить нам разрешения. Однако у нас действительно есть СУБД mysql.
3. но у вас есть доступ к папке на вашем сервере?
4. У меня есть доступ к папке на сервере.
5. Тогда, вероятно, было бы лучше хранить изображения в виде файлов в этой папке.
Ответ №1:
data:[<MIME-type>][;charset=<encoding>][;base64],<data>
Вам нужна запятая после base64
, которой, похоже, нет в вашем блоке кода (хотя в вашей отдельной строке, которую вы опубликовали, она есть). Каким образом это происходит в вашем реальном коде?
Комментарии:
1. В моем коде у меня действительно есть запятая. То, что я опубликовал здесь, должно быть, было в хранилище кода без обновления.
2. Если бы я мог получить ссылку или ссылку на учебное пособие, я думаю, я был бы в хорошем положении.
Ответ №2:
Я бы отделил этот запрос от веб-страницы контейнера. Я не уверен, есть ли лучший способ, но уверен, что мой способ намного проще.
page.html:
<img src="img.php" />
img.php:
<?php
$img=getimg();//get the img binary from mysql and don't base64 it.
echo $img;
?>
Комментарии:
1. Приведет ли это к отправке сообщения, отличного от ajax, на сервер? И почему нет base64?
2. Это не имеет ничего общего с ajax или post. Создание
img.php
independ является более гибким, позже вы можете добавить поддержку ajax или кэша, изменить sql-запрос, не касаясь главной страницы. Но с bas64 вы можете только представить, насколько это будет сложно.