Như mọi khi, tôi đang chia sẻ những điều mới mà tôi học được ở đây trên blog của mình. Gần đây tôi đang làm việc với một yêu cầu đối với bảng điều khiển báo cáo ứng dụng web ngăn xếp LAMP mà tôi cần lưu trữ — và cuối cùng — truy xuất một. file PDF. Tôi đã đọc ở một số nơi [cuốn sách tuyệt vời này là một nguồn tài nguyên tuyệt vời] rằng một tùy chọn khả thi là lưu trữ hình ảnh hoặc tài liệu [. pdf trong trường hợp này] trong bảng cơ sở dữ liệu thực chứ không phải trên hệ thống tệp máy chủ. MySQL có kiểu dữ liệu BLOB
có thể được sử dụng để lưu trữ các tệp như. pdf,. jpg,. txt và những thứ tương tự. Trong bài đăng trên blog này, tôi trình bày cách tôi…
Thay vào đó, chúng tôi chỉ cần tải tệp lên máy chủ. Và chúng tôi đặt tên tệp vào cơ sở dữ liệu. Sau đó, chúng tôi chỉ định đường dẫn đầy đủ đến tệp để chúng tôi có thể truy cập tệp
Theo quan điểm của tôi, điều này đơn giản hơn nhiều. Tuy nhiên, nếu bạn đang muốn thực sự chèn tệp vào cơ sở dữ liệu bằng cách sử dụng blob, thì chúng tôi chưa tạo hướng dẫn về điều này. Và bạn có thể sẽ thoát khỏi trang này
Tuy nhiên, nếu chúng ta muốn hiển thị một bảng với các tệp được lưu trữ dựa trên cơ sở dữ liệu MySQL, thì hướng dẫn này thực sự hữu ích để chỉ cho bạn cách thực hiện
Vì vậy, một lần nữa, với phương pháp này, tất cả những gì chúng ta phải làm là đặt tên tệp vào cơ sở dữ liệu MySQL. Sau đó, chúng tôi có thể sử dụng mã PHP để hiển thị tệp bằng cách chỉ định đường dẫn đầy đủ đến tệp đó
Đây là một cách đơn giản và dễ dàng hơn nhiều để thực sự tải các tệp lên cơ sở dữ liệu, cách này phức tạp hơn
Chúng tôi đã từng cho phép người dùng tải tệp lên trang web nhưng đã dừng do lo ngại về phần mềm độc hại
Để chèn tệp vào cơ sở dữ liệu MySQL, như đã giải thích trước đây, chúng tôi không thực sự đưa tệp vào cơ sở dữ liệu. Chúng tôi đặt các tệp trong một thư mục thông thường trên trang web của chúng tôi. Tôi đã tạo một thư mục tệp [hoặc thư mục] trên trang web của mình mà các tệp sẽ tải lên. Trong cơ sở dữ liệu MySQL, tất cả những gì bạn làm là đặt tên tệp. Chúng tôi cũng đặt một mô tả của tệp trong cơ sở dữ liệu. Tuy nhiên, để hiển thị tệp, tất cả những gì chúng ta cần là tên tệp. Khi chúng ta có cái này, tất cả những gì chúng ta phải làm trong mã PHP là chỉ định đường dẫn đầy đủ đến tệp này để nó có thể được hiển thị
Vì vậy, một lần nữa, chúng tôi tải tệp lên một thư mục trên trang web của chúng tôi. Chúng tôi không đặt tệp trực tiếp vào cơ sở dữ liệu MySQL. Chúng tôi tải nó lên một thư mục trên trang web của chúng tôi. Chúng tôi chỉ cần lấy tên tệp và đặt nó vào cơ sở dữ liệu MySQL. Sau đó, chúng tôi có đường dẫn hoàn chỉnh đến tệp trong mã của mình để chúng tôi có thể hiển thị và hiển thị nó
Vì vậy, nếu chúng tôi đang lưu một tệp có tên, thế chấp. pdf, chúng tôi lưu tên file đầy đủ, thế chấp. pdf
Chúng tôi sẽ đi qua điều này dưới đây
Trong phần trình diễn này, tôi sẽ sử dụng phpMyAdmin. Khi tạo bảng trong MySQL, chúng ta tạo 3 cột
Một cột là cột ID, cột này sẽ có mặt trong bất kỳ bảng MySQL nào. Cột này là duy nhất và phải được đặt thành tự động tăng. Nó đếm liên tục tăng 1 từ bất kỳ hàng dữ liệu mới nào được chèn vào. Vì vậy, nó bắt đầu từ 1. Nếu bạn chèn 5 hàng dữ liệu thì hàng thứ 5 sẽ có ID là 5. Mục đích của nó là nó độc đáo và nó cung cấp cho bạn cách sắp xếp các video mới tải lên theo thứ tự khi chúng được tải lên. Bạn cũng có thể làm điều này theo những cách khác. Nhưng đây có lẽ là cách dễ nhất để hiển thị các tệp theo thứ tự khi chúng được tải lên
Cột thứ hai mà tôi đã tạo là cột mô tả. Điều này chứa một mô tả của tập tin được nhập. Sau khi người dùng đặt mô tả của tệp vào hộp văn bản và tải tệp lên cùng với mô tả, mô tả của tệp đã nhập sẽ được chèn vào cột mô tả của bảng
Cột thứ ba và cột cuối cùng mà tôi đã tạo là cột tên tệp. Điều này giữ tên tập tin đầy đủ của tập tin. Vì vậy, nếu bạn đang tải lên một tệp có tên là bản ghi. txt, tên tệp đầy đủ được nhập vào cột tên tệp là bản ghi. txt
Dưới đây, bạn có thể thấy cấu trúc của bảng được tạo đóng vai trò là bảng tải tệp lên
Vì nó chứa thông tin tệp nên tôi đặt tên cho bảng là 'Tệp'. Bạn có thể xem hình ảnh cấu tạo của bảng bên dưới
Vì vậy, bạn có thể thấy cấu trúc của bảng trên
Cột ID có kiểu int [11]
Cột mô tả được đặt thành VARCHAR[100] để cho phép nó chứa nhiều ký tự. Đôi khi người dùng có thể muốn đưa vào một phần mô tả tốt về tệp, vì vậy chúng tôi cho phép tối đa 100 ký tự
Cột tên tệp được đặt thành VARCHAR[50] để cho phép tên tệp hơi dài
Lý do chúng tôi sử dụng VARCHAR cho tất cả các trường này là vì nó cho phép số lượng ký tự thay đổi. CHAR là một số tiền cố định. Bạn sẽ sử dụng CHAR khi mỗi lần tải lên có cùng số lượng ký tự. Đây sẽ là trường hợp của một số thứ, chẳng hạn như chữ viết tắt của tiểu bang, vì chúng đều có 2 ký tự. Trong trường hợp này, CHAR sẽ không hoạt động đối với bất kỳ trường nào
Tất nhiên, nếu bạn cần, hãy sửa đổi các thông số về số lượng để đáp ứng nhu cầu của bạn
Mã HTML
Vì vậy, bây giờ, hãy xem mã HTML cần thiết để tạo trình tải lên được thấy ở trên, cho phép các tệp được tải lên
Mã HTML được hiển thị bên dưới
Đoạn mã HTML ở trên tạo một biểu mẫu tải lên. Vì chúng tôi muốn trang này giữ tất cả thông tin thu được từ biểu mẫu, chúng tôi đặt hành động bằng "". Nếu chúng tôi muốn gửi thông tin đã nhập vào trình tải lên này đến một trang khác, chúng tôi sẽ chỉ định trang PHP đó. Nhưng vì chúng tôi muốn thông tin cho mã PHP sau này trên trang này, chúng tôi đặt hành động bằng không. Phương pháp là POST. Và để tải lên tệp, câu lệnh enctype="multipart/form-data" phải được nhập. Nếu không, tải lên tập tin sẽ không hoạt động
Dòng bên dưới tạo một hộp văn bản chứa mô tả của tệp. Nếu không có mô tả nào được nhập và người dùng nhấp vào nút Tải lên, câu lệnh "Phải nhập mô tả" được xuất ra
Sau đó, chúng tôi tạo một dòng cho phép tải lên tệp. Nếu không có tệp nào được nhập, câu lệnh "Vui lòng chọn tệp" được xuất ra
Sau đó, chúng tôi tạo một nút gửi, vì hầu hết mọi biểu mẫu đều cần. Chúng tôi cung cấp cho nó giá trị, "Tải lên", để Tải lên xuất hiện trên nút. Nếu không, nó sẽ chỉ gửi theo mặc định
Sau đó chúng tôi đóng biểu mẫu
Điều này kết thúc HTML cần thiết cho trang này
Mã PHP
Khối mã PHP đầu tiên
Có 3 khối mã PHP cần thiết
Khối đầu tiên được hiển thị bên dưới
Khối này dùng để tải tệp đã nhập vào thư mục, nơi chúng tôi sẽ lưu trữ tệp, trong trường hợp này là thư mục Tải lên/tệp/
Vì vậy, mã này lấy tệp mà người dùng đã nhập
Chúng tôi cũng lấy mô tả mà người dùng đã nhập của tệp và đặt nó vào biến $description
Chúng tôi chỉ định thư mục mà chúng tôi muốn tệp được tải lên. Trong trường hợp này, nó là thư mục Upload/files/. Nếu người dùng đã nhấp vào nút Tải lên mà không chỉ định tệp, câu lệnh "Vui lòng chọn tệp" được xuất ra. Nếu người dùng nhập một tệp, tệp sẽ được tải lên thư mục mà chúng tôi đã chỉ định thông qua hàm move_uploaded_file[]. Chức năng này tạo một tên tạm thời cho tệp tải lên và sau đó chuyển tệp vĩnh viễn vào thư mục chúng tôi chỉ định. Câu lệnh "Đã tải lên" sau đó được xuất ra
Điều này kết thúc khối mã PHP này
Khối mã PHP thứ hai
Khối mã PHP tiếp theo chèn dữ liệu vào bảng MySQL để lưu trữ. Chúng bao gồm mô tả của tệp và tên tệp của nó
Khối mã này được hiển thị bên dưới
Khối mã này thiết lập kết nối với cơ sở dữ liệu MySQL đang được sử dụng. Điều này yêu cầu người dùng, mật khẩu, máy chủ, cơ sở dữ liệu và tên bảng
Như đã nêu ở trên, một bảng MySQL đã được tạo bằng phpMyAdmin. Bảng này có 3 cột. ID, mô tả, tên tệp
Nếu hộp văn bản mô tả không trống, thì chúng tôi chèn vào bảng Tệp MySQL mô tả và tên tệp của tệp
Sau đó chúng tôi đóng cơ sở dữ liệu
Khối mã PHP thứ ba
Khối mã PHP tiếp theo hiển thị bảng với mô tả tệp và liên kết đến tệp thực tế
Vì vậy, một lần nữa, chúng tôi thiết lập kết nối với cơ sở dữ liệu MySQL chứa bảng Tệp
Chúng tôi truy vấn bảng chứa thông tin tệp
We then display the table with the html