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