Hướng dẫn how to save file in database using php - cách lưu tệp trong cơ sở dữ liệu bằng php

Tôi đã hiển thị ví dụ tải lên tệp bằng PHP trong các hướng dẫn trước đây & NBSP; Tải lên tệp PHP & nbsp; nhưng trong hướng dẫn này, tôi sẽ chỉ cho bạn cách lưu các tệp đã tải lên cơ sở dữ liệu MySQL bằng PHP.

Bạn có thể tự hỏi tại sao bạn sẽ cần lưu nội dung tệp vào cơ sở dữ liệu thay vì chỉ vào hệ thống tệp. Trong các tình huống trong đó ứng dụng PHP cần đặt toàn bộ tệp thì phương thức ưa thích sẽ là đưa tệp vào hệ thống tệp máy chủ và lưu đường dẫn tệp vào cơ sở dữ liệu.

Tuy nhiên, trong các tình huống, trong đó một ứng dụng cần lưu toàn bộ nội dung tệp vào cơ sở dữ liệu cùng với các dữ liệu khác. Trong những trường hợp như vậy, bạn phải đặt nội dung tệp vào trường Kiểu dữ liệu Blob MySQL.

Ưu điểm của việc lưu trữ các tệp vào cơ sở dữ liệu

  1. Axit (tính nguyên tử, tính nhất quán, tính toàn vẹn, độ bền) tính nhất quán bao gồm việc cuộn lại một bản cập nhật phức tạp khi các tệp được lưu trữ bên ngoài cơ sở dữ liệu. Có các tệp và cơ sở dữ liệu đồng bộ và có thể tham gia vào các giao dịch có thể rất hữu ích.
  2. Các tập tin đi với cơ sở dữ liệu và không thể mồ côi từ nó.
  3. Sao lưu tự động bao gồm các nhị phân tệp.

Nhược điểm lưu trữ tệp vào cơ sở dữ liệu

  1. Kích thước của một tệp nhị phân khác nhau giữa các cơ sở dữ liệu.
  2. Lưu trữ các tệp trong cơ sở dữ liệu có thể làm cho cơ sở dữ liệu lớn hơn nhiều. Do đó tăng kích thước của cơ sở dữ liệu. Mức độ kiến ​​thức cần thiết để duy trì cơ sở dữ liệu tăng theo quy mô của cơ sở dữ liệu, tức là, cơ sở dữ liệu lớn phức tạp hơn để duy trì so với cơ sở dữ liệu nhỏ. Do đó, nó làm tăng chi phí bảo trì cho doanh nghiệp.
  3. Cơ sở dữ liệu lớn hơn tiêu thụ nhiều bộ nhớ hơn khi họ cố gắng thực hiện những thứ vào bộ nhớ càng nhiều dữ liệu càng tốt.
  4. Tính di động cần được chăm sóc nếu các tính năng cụ thể của hệ thống như SQL Server đối tượng FileStream được sử dụng và trong tương lai, bạn cần di chuyển sang một hệ thống cơ sở dữ liệu khác.
  5. Mã lưu trữ các tệp vào cơ sở dữ liệu có thể là một vấn đề. Khi bạn lưu trữ các tệp trên hệ thống tệp, có một lớp bổ sung liên quan để bọc/tinh chỉnh/thay đổi tệp nguồn.
  6. Nó phức tạp hơn để phục vụ các tệp cho một trang web bởi vì, bạn phải viết một trình xử lý để truyền phát nhị phân tệp từ cơ sở dữ liệu. Một lần nữa, thêm một người xử lý là không thể nhưng thêm sự phức tạp.
  7. Trong nhiều trường hợp, nó sẽ làm mờ các tệp cơ sở dữ liệu và gây ra một số vấn đề về hiệu suất. Nếu bạn dán các đốm màu trong một cái bàn với một số lượng lớn các cột thì nó thậm chí còn tệ hơn.

Điều kiện tiên quyết

Php 7.4.3, MySQL 7.0.17, Apache HTTP Server 2.4

Tải lên các tệp và lưu vào MySQL

Trong ví dụ này, các tệp được chọn bằng các nút duyệt và tệp được lưu vào trường Blob cơ sở dữ liệu MySQL. Php Script lưu trữ các tệp vào cột được chỉ định của bảng cơ sở dữ liệu và trả về phản hồi dưới dạng thông báo thành công từ tập lệnh PHP. Là một bước xác thực, tôi chỉ thêm để kiểm tra xem bạn có chọn ít nhất một tệp để tải lên hay không.

Hướng dẫn này sẽ cung cấp cho bạn nhiều liên kết đính kèm hơn để tải lên tệp, vì vậy bạn sẽ nhấp vào đính kèm một tệp khác sau đó bạn sẽ nhận được nút Tệp để đính kèm một tệp khác. Nếu bạn không muốn tải lên tệp đã chọn thì bạn có thể xóa tệp đính kèm bằng liên kết Xóa.

Mẫu HTML dưới đây được yêu cầu để tải lên nhiều tệp:

Files Save into MySQL database using PHP
 

Dưới đây, các đoạn mã JQuery được yêu cầu để đính kèm thêm tệp và xóa tệp đã chọn nếu bạn không muốn tải lên tệp đã chọn.





Dưới đây mã PHP là bắt buộc để xác thực và lưu tệp vào cơ sở dữ liệu MySQL.

 $value) {
				if (0 < $value['error']) {
					echo 'Error during file upload ' . $value['error'];
				} else if (!empty($value['name'])) {
					$dbConn = mysqli_connect('localhost', 'db_name', 'db_pass', 'roytuts') or die('MySQL connect failed. ' . mysqli_connect_error());
					
					$sql = "insert into files_data(name, type, size, content, saved_date) values('".$value['name']."', '".$value['type']."', '".filesize_formatted($value['size'])."', '".mysqli_escape_string($dbConn, file_get_contents($value['tmp_name']))."', '".date('Y-m-d H:i:s')."')";
					
					$result = mysqli_query($dbConn, $sql) or die(mysqli_error($dbConn));
					
					if($result) {
						echo 'File successfully saved to database';
					}
				}
			}
		}
	}
	
	function filesize_formatted($size) {
		$units = array( 'B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB');
		$power = $size > 0 ? floor(log($size, 1024)) : 0;
		
		return number_format($size / pow(1024, $power), 2, '.', ',') . ' ' . $units[$power];
	}
?>

Bảng MySQL

Tôi đang tạo một bảng có tên Files_Data trong cơ sở dữ liệu Roytuts trong máy chủ MySQL.files_data under roytuts database in MySQL server.

CREATE TABLE `files_data` (
  `id` int unsigned COLLATE utf8mb4_unicode_ci NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `type` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL,
  `size` varchar(25) COLLATE utf8mb4_unicode_ci NOT NULL,
  `content` blob NOT NULL,
  `saved_date` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Kiểm tra ứng dụng

Khi bạn chạy tệp PHP trên thì bạn sẽ thấy biểu mẫu dưới đây để tải lên các tệp:

Hướng dẫn how to save file in database using php - cách lưu tệp trong cơ sở dữ liệu bằng php

Khi các tệp được chọn để tải lên:

Hướng dẫn how to save file in database using php - cách lưu tệp trong cơ sở dữ liệu bằng php

Khi các tệp được lưu vào cơ sở dữ liệu MySQL thì bạn sẽ nhận được tin nhắn thành công.

Hướng dẫn how to save file in database using php - cách lưu tệp trong cơ sở dữ liệu bằng php

Không chọn bất kỳ tệp nào để tải lên và nhấp vào nút tải lên sẽ cung cấp cho bạn thông báo lỗi.

Mã nguồn

Tải xuống

Làm cách nào để lưu một tệp trong PHP?

Mã PHP: Lưu một tệp với fopen / fwrite 'myFile1. txt '; $ fp = fopen ($ file, "w") hoặc die ("Không thể mở tệp $ để viết!"); fwrite ($ fp, $ data) hoặc die ("không thể ghi các giá trị vào tệp!"); fclose ($ fp); echo "Đã lưu vào tệp $ thành công!"; ?>fopen / fwrite 'myfile1. txt'; $fp = fopen($file, "w") or die("Couldn't open $file for writing!"); fwrite($fp, $data) or die("Couldn't write values to file!"); fclose($fp); echo "Saved to $file successfully!"; ?>

Làm cách nào để lưu tệp cơ sở dữ liệu?

Lưu các yếu tố thiết kế cơ sở dữ liệu để tái sử dụng..
Mở đối tượng cơ sở dữ liệu hoặc cơ sở dữ liệu ..
Trên tab Tệp, nhấp vào Lưu dưới dạng ..
Thực hiện một trong các bước sau: Để lưu cơ sở dữ liệu ở một định dạng khác, nhấp vào Lưu cơ sở dữ liệu là. ....
Nhấp vào định dạng bạn muốn sử dụng cho bản sao mới ..

Làm thế nào chúng ta có thể lưu trữ tệp đã tải lên trong cơ sở dữ liệu bằng PHP?

Nhận tiện ích mở rộng tệp bằng hàm pathinfo () trong PHP và xác thực định dạng tệp để kiểm tra xem người dùng có chọn tệp hình ảnh hay không.Tải lên hình ảnh lên máy chủ bằng hàm move_uploaded_file () trong PHP.Chèn tên tệp hình ảnh trong cơ sở dữ liệu MySQL bằng PHP.Trạng thái tải lên sẽ được hiển thị cho người dùng.

Làm cách nào để lưu một tệp trong mysql?

Lưu trữ tệp văn bản bằng JDBC: Chuỗi truy vấn = "Chèn vào hướng dẫn (tên, bài viết) giá trị (?,?)";chuẩn bị (truy vấn);Đặt các giá trị thành các chủ sở hữu vị trí bằng các phương thức setter của giao diện đã chuẩn bị và đối với giá trị đặt kiểu dữ liệu Clob bằng phương thức setCharacterStream ().