Php lưu hình ảnh base64 vào cơ sở dữ liệu

You can escape '+', '/' and '=' symbols using two simple functions:

function base_encode($id) {
    return str_replace(["A", "+", "/", "="], ["AA", "AB", "AC", "AD"], base64_encode($id));
}

function base_decode($id) {
    $id = preg_replace_callback('/(AA)|(AB)|(AC)|(AD)/', function ($m) {
        foreach(['A', '+', '/', '='] as $i => $value)
            if($m[$i + 1])
                return $value;
    }, $id);
    return base64_decode($id);
}
?>

this functions escapes symbol 'A' as 'AA', '+' as 'AB', '/' as 'AC', '=' as 'AD'.

Hình ảnh thường nằm trong thư mục tài sản/hình ảnh của ứng dụng của bạn. Người dùng web có thể dễ dàng truy cập hình ảnh của bạn bằng URL trực tiếp mà không cần đăng nhập. Nếu bạn đang lưu trữ hình ảnh đã tải lên của người dùng trong thư mục máy chủ web của mình, ai đó có thể lấy cắp những hình ảnh quan trọng của bạn. Ví dụ, ảnh của nhân viên

Một vấn đề khác là nếu bạn có nhiều máy chủ ứng dụng chạy cùng một ứng dụng để phục vụ đồng thời nhiều yêu cầu HTTP, hình ảnh do người dùng tải lên có thể được lưu trữ ở một trong hai máy chủ. Do đó, khi một người dùng khác cố gắng xem hình ảnh đã tải lên, hình ảnh có thể bị thiếu. Xem hình ảnh bên dưới

Php lưu hình ảnh base64 vào cơ sở dữ liệu

Thiếu hình ảnh khi sử dụng nhiều máy chủ ứng dụng

Có nhiều cách để giải quyết vấn đề này. Đây là cách tôi giải quyết nó. Lưu hình ảnh vào cơ sở dữ liệu

Tóm tắt quy trình làm việc.
Lưu hình ảnh
1) Hình ảnh đã tải lên sẽ được lưu vào một trong các thư mục máy chủ.
2) Chuyển đổi chuỗi nhị phân hình ảnh thành chuỗi base64 bằng cách sử dụng PHP base64_encode.
3) Lưu trữ chuỗi base64 trong cơ sở dữ liệu dưới dạng văn bản dài.

Đang tải hình ảnh
4) Tải chuỗi base64 chứa hình ảnh từ cơ sở dữ liệu.
5) Chuyển đổi chuỗi base64 thành nhị phân bằng PHP base64_decode.
6) Đặt tiêu đề kiểu trả về là ‘ image/png ‘.
7) Báo lại dữ liệu nhị phân.

Xem mã mẫu bên dưới

Biểu mẫu tải tệp lên

<html>
<body>

<form action="backend.php" method="POST" enctype="multipart/form-data">
	<input type="file" name="file"/>
	<br />
	<input type="submit"/>
</form>

</body>
</html>

phụ trợ

<?php
if(!isset($_GET["getfile"])){
	if ($_FILES["file"]["error"] > 0){
		echo "Error: " . $_FILES["file"]["error"] . "<br>";
	}else{
		move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
		$bin_string = file_get_contents($_FILES["file"]["name"]);
		$hex_string = base64_encode($bin_string);
		$mysqli = mysqli_init();
		if (!$mysqli->real_connect('localhost', 'root', '', 'test')) {
			die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
		}
		$mysqli->query("INSERT INTO upload(image) VALUES ('" . $hex_string . "')");
	}
}else{
	$mysqli = mysqli_init();
	if ($mysqli->real_connect('localhost', 'root', '', 'test')) {
		if ($result = $mysqli->query("SELECT * FROM upload ORDER BY id DESC")){
			if($row = $result->fetch_assoc()){
				$output_hex_string = $row["image"];
				$output_bin_string = base64_decode($output_hex_string);
				header("Content-Type: image/png");
				header("Content-Length: " . strlen($output_bin_string));
				$result->free();	
				echo $output_bin_string;
			}
		}
	}
  }
?>  

<img src="backend.php?getfile=1" />

Note: The last line of code ‘

Php lưu hình ảnh base64 vào cơ sở dữ liệu

Giải pháp thay thế rất nhanh

<?php 

$data = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6BAMAAAB6wkcOAAAAG1BMVEX///8AAACfn59fX18fHx/f39+/v79/f38/Pz9KdSATAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACeklEQVR4nO3WQU8aQRTA8WFxdj26uiw9QqIJR5vaxmPRJnBcWmuvSxNJj9gYy1G0rX7svjc7W5YApu1yav6/hOU5vMzbN8wsGgMAAAAAAAAAAAAAAAAAAAAAAAAAAPA/CE7i80zee0+iI0H0PXnzTF6gefc6Muuf5zWLh8nXSW9fgtNvQmaz724/z6eb85qPkncrwcVg0mvXrd6Ry7VUffADOz+kv/3NebvHfmQoK9Ht1CzvKsqMjz6+1uU92Zy369clasml+XYL1SOZZOBj9z7qbMzb8dXdu11dpH+rflaEYarXYnlt7kay5er+xsbuwwdTn87quwj2ygGJ3Z2Mp0t5DV+96643W6iuraZ2ok1Gd4t7cLssbC/nNfLLK41nlXuoR1bRtudxIl02XfWw5cajdKl1t9qjWRzr3jgtRjJT25N8x8mReT+U6seV6tJ8tXXNM6OzzB7KLb7aVvVAa+Xyupj6/VZWj9Jq6y4vlJcdlPttC9XHHR/IrlpaeWm+vS5PN9u2Vt6el5EU9dX3yoLpujwt6qvXLW4uymensak/a8VVN7xu+5U8M8r9Wat94uxwEbb8mhcroBs+StfkmVHm1/y0bvVKS3rM3VPHP051w/9uvpKnx7zR0WBg6gkX36Zr2f3AdIvNpBu+bL6apy27H5igZeqpHqluLosqf9tipxdn3Te/dPRSnzNa/UfgrwQHH0VmgvvMfNAJw4PMHN4V1d3cUV7NM70jY1/qB+PXJhiun/SP7caqZexN3H/h6nyJ+2u+zTLPfOon8U93b/Mkqdl6xeWkDK6ezbOTvAy28JAHAAAAAAAAAAAAAAAAAAAAAAAAAAArfgEnYGI6+pXm3AAAAABJRU5ErkJggg==";

file_put_contents('assets/images/my-quick-file.jpg', file_get_contents($data));

Ngoài ra, hãy đọc hướng dẫn của chúng tôi

  1. Cách chọn dữ liệu giữa hai ngày trong MySQL
  2. Lỗi sau khi cấu hình thủ công php. bộ đệm trong Laravel
  3. Khóa được chỉ định là lỗi quá dài trong Laravel
  4. Yêu cầu bài đăng AJAX PHP với ví dụ
  5. Cách sử dụng Laravel Soft Delete
  6. Làm thế nào để thêm phân trang Laravel Next Prev
  7. lỗi cURL 60. Sự cố chứng chỉ SSL. không thể lấy chứng chỉ nhà phát hành địa phương
  8. Sự khác biệt giữa Factory và Seeder trong Laravel
  9. ấu trùng. Tăng Số Lượng Nếu Sản Phẩm Đã Có Trong Giỏ Hàng
  10. Cách Tính Tuổi Từ Ngày Sinh
  11. Kiểm tra nếu một chuỗi chứa một từ cụ thể trong PHP
  12. Tự động điền vào các lựa chọn của trường được chọn trong ACF
  13. Cách tìm bản ghi trùng lặp trong cơ sở dữ liệu
  14. Cách tạo biến động trong PHP

Đó là nó từ cuối của chúng tôi. Chúng tôi hy vọng bài viết này đã giúp bạn tìm hiểu Cách chuyển đổi Base64 thành Image trong PHP

Vui lòng cho chúng tôi biết trong phần nhận xét nếu mọi thứ hoạt động như mong đợi, các vấn đề của bạn hoặc bất kỳ câu hỏi nào. Nếu bạn nghĩ rằng bài viết này đã tiết kiệm thời gian và tiền bạc của bạn, vui lòng bình luận, chia sẻ, thích và đăng ký. Cảm ơn bạn đã đọc bài đăng này 🙂 Hãy mỉm cười. mã hóa hạnh phúc

Tôi có nên lưu trữ hình ảnh dưới dạng base64 trong cơ sở dữ liệu không?

Nói chung là không . Base64 sẽ chiếm nhiều không gian hơn mức cần thiết để lưu trữ những hình ảnh đó. Tùy thuộc vào kích thước hình ảnh của bạn và tần suất chúng được truy cập, việc đưa vào cơ sở dữ liệu thường không phải là áp lực tối ưu. Bạn nên lưu trữ chúng trên hệ thống tệp hoặc trong thứ gì đó như bộ lưu trữ Azure blob.

Làm cách nào tôi có thể tải xuống hình ảnh base64 trong PHP?

php dưới dạng hình ảnh base64. .
Tải xuống
cơ sở64

Làm cách nào tôi có thể lấy base64 trong PHP?

Hàm base64_encode() là một hàm có sẵn trong PHP được sử dụng để chuyển đổi bất kỳ dữ liệu nào sang mã hóa base64. Để chuyển đổi hình ảnh thành mã hóa base64, trước tiên cần lấy nội dung của tệp. Điều này có thể được thực hiện với sự trợ giúp của hàm file_get_contents() của PHP.

Làm cách nào chúng tôi có thể lưu trữ và truy xuất hình ảnh từ cơ sở dữ liệu trong PHP?

Lưu trữ tệp hình ảnh trong cơ sở dữ liệu (tải lên. .
Kiểm tra xem người dùng có chọn tệp hình ảnh để tải lên không
Truy xuất nội dung của tệp hình ảnh theo tên tmp_name bằng hàm PHP file_get_contents()
Chèn nội dung nhị phân của hình ảnh vào cơ sở dữ liệu bằng PHP và MySQL
Hiển thị trạng thái tải lên hình ảnh cho người dùng