Mysql
 sql >> база данни >  >> RDS >> Mysql

Качете изображение в базата данни на MYSQL и го покажете с PHP с Swift

Получаване на изображението от потребителя

Вижте http://php.net/manual/en/reserved.variables. files.php и http://php.net/manual/en/features.file- upload.php и приятели за подробности как да използвате $_FILES за да получите качените.

След като имате изображението в променлива, кажете $jpg , не използвайте никакви функции за кодиране/декодиране на текст; само ще развали нещата. Различните подходи по-долу ще кажат какво да направите, за да избегнете препъване върху 8-битови кодове.

Има три начина за представяне на изображението, всеки е малко сложен

Съхранение на изображението в базата данни; показване на вградено изображение

Използвах този подход за миниатюри, но не го препоръчвам за големи изображения.

Съхранявайте го в MEDIUMBLOB в таблица, използвайте bin2hex() в PHP, за да превърнете изображението в низ. След това използвайте INSERT ... VALUES (UNHEX('...')) за да превключите обратно към двоичен файл от страна на MySQL сървъра.

След презареждане, накарайте препращащия PHP да каже нещо като

$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";

Съхранение на изображението в базата данни; PHP скрипт за генериране на изображение

Използвам това, когато искам да използвам функциите "image*" на PHP, за да променя изображението, преди да го покажа. Тъй като това е по-замесено, отколкото вероятно ви е необходимо, ще прегледам само това, което трябва да направите.

HTML за страницата ще извика друг скрипт, с каквито и аргументи, от които се нуждаете:

<img src=modify.php?this=stuff&that=stuff>

След това в modify.php , започнете с

header('Content-type: image/jpeg');

И завършете с това (ако приемем, че създавате JPEG):

imagejpeg($im);

Съхраняване на изображението във файл

Това е предпочитаният начин, по който повечето от големите уеб сайтове го правят през повечето време.

Ако вашият файл идва от качване, тогава нещо подобно го премества на по-добър път, без да се налага да докосвате jpg.

$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);

Повече информация и примери:http://php.net/manual/ en/function.move-uploaded-file.php

В HTML просто генерирайте нещо подобно:

<img src=path/to/file>

Направете проучване къде в пътя на вашия сървър можете да поставите изображения и се уверете, че разрешенията са подходящи.

Забележка:Базата данни не участва в задържането на изображението, вместо това има колона за задържане на url "path/to/file" :

image VARCHAR(255) NOT NULL

За по-нататъшно обсъждане

  • В коя от 3-те техники бихте искали да се задълбочите?
  • Нека видим HTML, който генерирате.
  • Нека видим SHOW CREATE TABLE .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Spring Data изглежда не разбира името на @Column

  2. Топ алтернативи на MySQL Workbench

  3. Коя MySQL вилка/версия да изберете?

  4. Как да експортирате данни от SQL Server 2005 в MySQL

  5. Създайте заявка, за да получите броя на незавършените обаждания