în general, atunci când încărcăm fișierul imagine în PHP, imaginea încărcată este stocată într-un director al serverului și numele imaginii respective este stocat în baza de date. În momentul afișării, fișierul este preluat de pe server și imaginea este redată pe pagina web. Dar, dacă nu doriți să consumați spațiul serverului, fișierul poate fi stocat numai în baza de date. Puteți încărca o imagine fără a stoca fișierul fizic pe server folosind baza de date MySQL. Este foarte ușor să stocați și să preluați imagini din Baza de date folosind PHP și MySQL.
dacă sunteți preocupat de spațiul serverului și aveți nevoie de spațiu liber pe serverul dvs., puteți introduce fișierul imagine direct în baza de date fără a-l încărca în directorul serverului. Această procedură ajută la optimizarea spațiului serverului, deoarece conținutul fișierului imagine este stocat în baza de date, mai degrabă decât în server. În acest tutorial, vă vom arăta cum să stocați fișiere imagine în baza de date MySQL și să preluați imagini din Baza de date folosind PHP.
înainte de a începe să integrați încărcarea fișierelor cu baza de date, aruncați o privire asupra structurii fișierelor.
store_retrieve_image_from_database/├── dbConfig.php├── index.php├── upload.php├── view.php└── css/ └── style.css
introduceți fișierul imagine în MySQL
MySQL are un tip de date BLOB (obiect mare binar) care poate conține o cantitate mare de date binare. Tipul de date BLOB este perfect pentru stocarea datelor de imagine în baza de date. În MySQL, sunt disponibile patru tipuri de BLOB-TINYBLOB, BLOB, MEDIUMBLOB și LONGBLOB. Tipul de date LONGBLOB este perfect pentru a stoca datele fișierului imagine.
Creare tabel bază de date
pentru a stoca conținutul fișierului, este necesar un tabel în baza de date. Următorul SQL creează un tabel images
cu câmpul LONGBLOB data type din Baza de date MySQL.
Creare tabel `imagini` ( `id` int(11) NOT NULL AUTO_INCREMENT, `image` longblob NOT NULL, `created` datetime NOT NULL default current_timestamp(), cheie primară (`id`)) ENGINE=InnoDB default CHARSET=utf8 COLLATE=utf8_unicode_ci;
configurarea bazei de date (dbConfig.php)
fișierul dbConfig.php
este utilizat pentru conectarea și selectarea bazei de date. Specificați gazda bazei de date ($dbHost
), numele de utilizator ($dbUsername
), parola ($dbPassword
) și numele ($dbName
) conform acreditărilor bazei de date MySQL.
<?php
// Database configuration
$dbHost = "localhost";
$dbUsername = "root";
$dbPassword = "root";
$dbName = "codexworld";
// Create database connection
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
formular de încărcare imagine
creați un formular HTML cu un câmp de introducere a fișierului pentru a selecta un fișier imagine pentru încărcare. Asigurați-vă că eticheta <form> conține următoarele atribute.
- method = „post”
- enctype= „multipart / formular-date”
<formular de acțiune= " încărcați.php" method= "post" enctype="multipart/form-data"> <label>selectați fișierul imagine:</label> <input type="file" name="image"> <input type="submit" name="submit" value="Upload"></form>
stocați fișierul imagine în baza de date (încărcați.php)
fișierul upload.php
gestionează procesul de încărcare a imaginilor și inserarea bazei de date.
- verificați dacă utilizatorul selectează un fișier imagine de încărcat.
- preluați conținutul fișierului imagine prin tmp_name folosind funcția PHP file_get_contents ().
- introduceți conținutul binar al imaginii în baza de date folosind PHP și MySQL.
- afișează utilizatorului starea de încărcare a imaginii.
<?php
// Include the database configuration file
require_once 'dbConfig.php';
// If file upload form is submitted
$status = $statusMsg = '';
if(isset($_POST)){
$status = 'error';
if(!empty($_FILES)) {
// Get file info
$fileName = basename($_FILES);
$fileType = pathinfo($fileName, PATHINFO_EXTENSION);
// Allow certain file formats
$allowTypes = array('jpg','png','jpeg','gif');
if(in_array($fileType, $allowTypes)){
$image = $_FILES;
$imgContent = addslashes(file_get_contents($image));
// Insert image content into database
$insert = $db->query("INSERT into images (image, created) VALUES ('$imgContent', NOW())");
if($insert){
$status = 'success';
$statusMsg = "File uploaded successfully.";
}else{
$statusMsg = "File upload failed, please try again.";
}
}else{
$statusMsg = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.';
}
}else{
$statusMsg = 'Please select an image file to upload.';
}
}
// Display status message
echo $statusMsg;
?>
preluare imagine din Baza de date (vizualizare.php)
în fișierul view.php
, vom prelua conținutul imaginii din Baza de date MySQL și le vom lista pe pagina web.
- parametrii de date, charset și base64 din atributul src sunt utilizați pentru a afișa blob de imagine din Baza de date MySQL.
<?php
// Include the database configuration file
require_once 'dbConfig.php';
// Get image data from database
$result = $db->query("SELECT image FROM images ORDER BY id DESC");
?><?php if($result->num_rows > 0){ ?>
<div class="gallery">
<?php while($row = $result->fetch_assoc()){ ?>
<img src="data:image/jpg;charset=utf8;base64,<?php echo base64_encode($row); ?>" />
<?php } ?>
</div>
<?php }else{ ?>
<p class="status error">Image(s) not found...</p>
<?php } ?>
încărcați mai multe imagini și stocați în baza de date folosind PHP și MySQL
concluzie
acest tutorial vă ajută să integrați funcționalitatea de încărcare a fișierelor fără a stoca fișiere pe server. Puteți utiliza acest exemplu de script pentru a încărca & stocați imagini în baza de date și preluați imagini din Baza de date și afișați-le pe pagina web utilizând PHP și MySQL. Pentru a face procesul de încărcare a imaginii Ușor de utilizat, Utilizați jQuery pentru a încărca fișiere cu bara de progres folosind Ajax și PHP.
doriți să obțineți ajutor de implementare sau să modificați sau să îmbunătățiți funcționalitatea acestui script? Trimiteți cerere de servicii plătite
dacă aveți întrebări despre acest script, trimiteți-l comunității noastre QA-puneți întrebarea