правильный способ эхо-отображения данных изображения из php для использования Jquery

#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 вы можете только представить, насколько это будет сложно.