Получаване на изображението от потребителя
Вижте 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
.