De afbeelding van de gebruiker ophalen
Zie http://php.net/manual/en/reserved.variables. bestanden.php
en http://php.net/manual/en/features.file- upload.php
en vrienden voor de details over het gebruik van $_FILES
om de geüploade te ontvangen.
Zodra je de afbeelding in een variabele hebt, zeg je $jpg
, gebruik geen functies voor het coderen/decoderen van tekst; het zal alleen dingen verminken. De verschillende benaderingen hieronder zullen aangeven wat u moet doen om te voorkomen dat u over 8-bits codes struikelt.
Er zijn drie manieren om de afbeelding te presenteren, elk is enigszins complex
Bewaren van de afbeelding in de database; afbeelding inline weergeven
Ik heb deze aanpak gebruikt voor miniaturen, maar raad het niet aan voor grote afbeeldingen.
Bewaar het in een MEDIUMBLOB
gebruik in een tabel bin2hex()
in PHP om de afbeelding in een string te veranderen. Gebruik dan INSERT ... VALUES (UNHEX('...'))
om terug te schakelen naar binair aan de kant van de MySQL-server.
Laat de verwijzende PHP na het herladen iets zeggen als
$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Bewaren van de afbeelding in de database; PHP-script om afbeelding te genereren
Ik gebruik dit wanneer ik de "image*"-functies van PHP wil gebruiken om de afbeelding te wijzigen voordat deze wordt weergegeven. Aangezien dit meer omslachtig is dan je waarschijnlijk nodig hebt, zal ik alleen overlopen wat er moet gebeuren.
De html voor de pagina zou een ander script aanroepen, met alle argumenten die je nodig hebt:
<img src=modify.php?this=stuff&that=stuff>
Dan in modify.php
, begin met
header('Content-type: image/jpeg');
En eindig hiermee (ervan uitgaande dat je een JPEG aan het bouwen bent):
imagejpeg($im);
De afbeelding opslaan in een bestand
Dit is de manier waarop de meeste grote websites het meestal doen.
Als je bestand afkomstig is van een upload, dan verplaatst zoiets het naar een beter pad zonder de jpg aan te raken.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Meer info en voorbeelden:http://php.net/manual/ nl/function.move-uploaded-file.php
Genereer in de HTML eenvoudig zoiets als dit:
<img src=path/to/file>
Doe wat onderzoek naar waar in het pad van uw server u afbeeldingen kunt plaatsen en zorg ervoor dat de machtigingen voldoende zijn.
Opmerking:de database is niet betrokken bij het bewaren van de afbeelding, maar heeft een kolom voor het bewaren van de url "path/to/file"
:
image VARCHAR(255) NOT NULL
Voor verdere discussie
- In welke van de 3 technieken zou je dieper willen ingaan?
- Laten we eens kijken naar de HTML die u aan het genereren bent.
- Laten we eens kijken
SHOW CREATE TABLE
.