Pobieranie obrazu od użytkownika
Zobacz http://php.net/manual/en/reserved.variables. pliki.php
i http://php.net/manual/en/features.file- upload.php
i przyjaciół, aby uzyskać informacje o tym, jak używać $_FILES
aby otrzymać przesłane.
Gdy już masz obraz w zmiennej, powiedz $jpg
, nie używaj żadnych funkcji kodowania/dekodowania tekstu; tylko zniszczy rzeczy. Poniższe różne podejścia pokażą, co zrobić, aby uniknąć potknięcia się o kody 8-bitowe.
Istnieją trzy sposoby prezentacji obrazu, każdy z nich jest nieco skomplikowany
Przechowywanie obrazu w bazie danych; pokazywanie obrazu w tekście
Użyłem tego podejścia do miniatur, ale nie polecam w przypadku dużych obrazów.
Przechowuj go w MEDIUMBLOB
w tabeli użyj bin2hex()
w PHP, aby zamienić obraz w ciąg. Następnie użyj INSERT ... VALUES (UNHEX('...'))
aby przełączyć się z powrotem na binarny po stronie serwera MySQL.
Po ponownym załadowaniu, niech PHP odwołujący się powie coś w stylu
$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";
Przechowywanie obrazu w bazie danych; Skrypt PHP do generowania obrazu
Używam tego, gdy chcę użyć funkcji PHP "image*" do zmodyfikowania obrazu przed jego wyświetleniem. Ponieważ jest to bardziej zaangażowane, niż prawdopodobnie potrzebujesz, przeanalizuję tylko, co trzeba zrobić.
HTML strony wywołałby inny skrypt, z dowolnymi argumentami, których potrzebujesz:
<img src=modify.php?this=stuff&that=stuff>
Następnie w modify.php
, zacznij od
header('Content-type: image/jpeg');
I zakończ na tym (zakładając, że budujesz JPEG):
imagejpeg($im);
Przechowywanie obrazu w pliku
Jest to preferowany sposób, w jaki większość dużych witryn internetowych robi to przez większość czasu.
Jeśli Twój plik pochodzi z przesłanego pliku, coś takiego przenosi go na lepszą ścieżkę bez konieczności dotykania pliku jpg.
$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);
Więcej informacji i przykładów:http://php.net/manual/ pl/function.move-uploaded-file.php
W kodzie HTML po prostu wygeneruj coś takiego:
<img src=path/to/file>
Sprawdź, gdzie na ścieżce serwera możesz umieścić obrazy i upewnij się, że uprawnienia są odpowiednie.
Uwaga:baza danych nie jest zaangażowana w przechowywanie obrazu, zamiast tego ma kolumnę do przechowywania adresu URL "path/to/file"
:
image VARCHAR(255) NOT NULL
Do dalszej dyskusji
- Którą z 3 technik chciałbyś zagłębić?
- Zobaczmy, jaki kod HTML generujesz.
- Zobaczmy
SHOW CREATE TABLE
.