Đã chỉnh sửa để thêm: Mã sau đã lỗi thời và sẽ không hoạt động trong PHP 7. Xem ghi chú về phía dưới của câu trả lời để biết thêm chi tiết.: The following code is outdated and won't work in PHP 7. See the note towards the bottom of the answer for more details.: The following code is outdated and won't work in PHP 7. See the note towards the bottom of the answer for more details. Show Nội dung chính
Giả sử cấu trúc bảng của ID số nguyên và cột dữ liệu Blob và giả sử các hàm MySQL đang được sử dụng để giao diện với cơ sở dữ liệu, có lẽ bạn có thể làm điều gì đó như thế này:
Mặc dù vậy, một lời cảnh báo, việc lưu trữ các đốm màu trong cơ sở dữ liệu thường không được coi là ý tưởng tốt nhất vì nó có thể gây ra sự phình to của bảng và có một số vấn đề khác liên quan đến nó. Một cách tiếp cận tốt hơn là di chuyển tệp ở đâu đó trong hệ thống tập tin nơi nó có thể được truy xuất và lưu trữ đường dẫn đến tệp trong cơ sở dữ liệu thay vì chính tệp. Ngoài ra, việc sử dụng các cuộc gọi hàm mysql_* không được khuyến khích vì các phương pháp đó không được chấp nhận một cách hiệu quả và không thực sự được xây dựng với các phiên bản của MySQL mới hơn 4.x trong tâm trí. Thay vào đó, bạn nên chuyển sang MySQLI hoặc PDO. CẬP NHẬT: Các chức năng MySQL_* được không dùng nữa trong PHP 5.x và được xóa hoàn toàn trong Php 7! Bây giờ bạn không có lựa chọn nào khác ngoài việc chuyển sang một bản tóm tắt cơ sở dữ liệu hiện đại hơn (MySQLI, PDO). Tôi đã quyết định để lại câu trả lời ban đầu ở trên vì lý do lịch sử nhưng không thực sự sử dụng nó: mysql_* functions are deprecated in PHP 5.x and are REMOVED COMPLETELY IN PHP 7! You now have no choice but to switch to a more modern Database Abstraction (MySQLI, PDO). I've decided to leave the original answer above intact for historical reasons but don't actually use it: mysql_* functions are deprecated in PHP 5.x and are REMOVED COMPLETELY IN PHP 7! You now have no choice but to switch to a more modern Database Abstraction (MySQLI, PDO). I've decided to leave the original answer above intact for historical reasons but don't actually use it Đây là cách thực hiện với MySQLI trong chế độ thủ tục:
Cách lý tưởng để thực hiện nó là với các câu lệnh được chuẩn bị của MySQLI/PDO. Giống 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 đã làm việc với một yêu cầu cho một bảng điều khiển báo cáo ứng dụng web Stack Stack trong đó tôi cần lưu trữ - và cuối cùng - truy xuất tệp .pdf. Tôi đã đọc ở một số nơi (cuốn sách tuyệt vời này là một 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 tế trái ngược với hệ thống tệp máy chủ. MySQL có kiểu dữ liệu Bản tin cho các nhà phát triển PHP và MySQLNhận một bản sao của Sách điện tử của tôi, 10 Lời khuyên của MySQL cho mọi người, hoàn toàn miễn phí khi bạn đăng ký nhận bản tin OpenLamptech.absolutely free when you subscribe to the OpenLampTech newsletter. absolutely free when you subscribe to the OpenLampTech newsletter. Self-Promotion:Chúng ta có thể lưu trữ pdf trong blob không?Since coffee is my favorite drink, you can even buy me one if you would like!Since coffee is my favorite drink, you can even buy me one if you would like! PDFS có thể được tải từ các tệp, luồng và mảng nhị phân từ- và được lưu. Tất cả đều có thể làm việc với lưu trữ blob.
Giả sử cấu trúc bảng của ID số nguyên và cột dữ liệu Blob và giả sử các hàm MySQL đang được sử dụng để giao diện với cơ sở dữ liệu, có lẽ bạn có thể làm điều gì đó như thế này: Mặc dù vậy, một lời cảnh báo, việc lưu trữ các đốm màu trong cơ sở dữ liệu thường không được coi là ý tưởng tốt nhất vì nó có thể gây ra sự phình to của bảng và có một số vấn đề khác liên quan đến nó. Một cách tiếp cận tốt hơn là di chuyển tệp ở đâu đó trong hệ thống tập tin nơi nó có thể được truy xuất và lưu trữ đường dẫn đến tệp trong cơ sở dữ liệu thay vì chính tệp.Ngoài ra, việc sử dụng các cuộc gọi hàm mysql_* không được khuyến khích vì các phương pháp đó không được chấp nhận một cách hiệu quả và không thực sự được xây dựng với các phiên bản của MySQL mới hơn 4.x trong tâm trí. Thay vào đó, bạn nên chuyển sang MySQLI hoặc PDO. CẬP NHẬT: Các chức năng MySQL_* được không dùng nữa trong PHP 5.x và được xóa hoàn toàn trong Php 7! Bây giờ bạn không có lựa chọn nào khác ngoài việc chuyển sang một bản tóm tắt cơ sở dữ liệu hiện đại hơn (MySQLI, PDO). Tôi đã quyết định để lại câu trả lời ban đầu ở trên vì lý do lịch sử nhưng không thực sự sử dụng nó: mysql_* functions are deprecated in PHP 5.x and are REMOVED COMPLETELY IN PHP 7! You now have no choice but to switch to a more modern Database Abstraction (MySQLI, PDO). I've decided to leave the original answer above intact for historical reasons but don't actually use it Đây là cách thực hiện với MySQLI trong chế độ thủ tục:link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"/> Cách lý tưởng để thực hiện nó là với các câu lệnh được chuẩn bị của MySQLI/PDO./p><h4 class="text-center" style="margin-top: 100px;">Upload A PDF To The Database</h4> Giống 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 đã làm việc với một yêu cầu cho một bảng điều khiển báo cáo ứng dụng web Stack Stack trong đó tôi cần lưu trữ - và cuối cùng - truy xuất tệp .pdf. Tôi đã đọc ở một số nơi
(cuốn sách tuyệt vời này là một 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 tế trái ngược với hệ thống tệp máy chủ. MySQL có kiểu dữ liệu Nếu bạn thích nội dung được viết ở đây, bằng mọi cách, hãy chia sẻ blog này và (các) bài đăng yêu thích của bạn với những người khác có thể được hưởng lợi từ hoặc thích nó. Vì cà phê là đồ uống yêu thích của tôi, bạn thậm chí có thể mua cho tôi một cái nếu bạn muốn!Tôi đang sử dụng một bảng có tên ‘Project_PDF, với 3 cột (xem ảnh chụp màn hình đi kèm) để lưu trữ dữ liệu: ‘ID,: Loại Project_name,: Loại 3//attached pdf file information$file_name = $_FILES['pdf_file']['name']; $file_tmp = $_FILES['pdf_file']['tmp_name']; if ($pdf_blob = fopen($file_tmp, "rb")) { try { include __DIR__."/includes/DatabaseConnection.php"; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ insert_sql = "chèn vào` project_pdf`
(`project_name`,` pdf_doc`) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; : project_name,: pdf_doc); ";$insert_sql = "INSERT INTO `project_pdf` (`project_name`, `pdf_doc`) & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ stmt = $ pdo
---> chuẩn bị ($ insert_sql); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ stmt- & gt; bindparam (': project_name', $ presject_name); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; $ stmt- & gt; bindparam (': pdf_doc', $ pdf_blob, pdo :: param_lob);$stmt = $pdo--->prepare($insert_sql); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; if ($ stmt- & gt; exec () === false) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; echo'could không lưu thông tin vào cơ sở dữ liệu '; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } khác {&
nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; echo'information đã lưu '; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } Catch (pdoException $ e) {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; echo'database lỗi '. $ e- & gt; getMessage ().' trong '. $ e-
& gt; getfile (). & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ':'. $ e- & gt; getLine (); & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; & nbsp; & nbsp; } khác {& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // fopen () đã không thành công trong việc mở tệp .pdf để đọc. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;
& nbsp; echo'could không mở tệp pdf đính kèm '; & nbsp; & nbsp; & nbsp; & nbsp; } & nbsp; & nbsp; }} khác {& nbsp; & nbsp; // Nút gửi không được nhấp. Không có điều hướng kịch bản trực tiếp. & nbsp; & nbsp; Tiêu đề ('Vị trí: sele_file.php');}if ($stmt->execute() === FALSE) { Xác minh nút được nhấp và tệp được đính kèmKhối
2 đầu tiên xác minh rằng nút 'gửi' từ 4 đã được nhấp và trường 'PDF_FILE' có tệp đính kèm bằng cách sử dụng các hàm PHP
8 và
9 ):
Mẹo: Có thể xác thực nhiều hơn có thể được thực hiện ở đây để xác minh loại tệp là một .pdf thực tế vì loại tệp đó là những gì chúng tôi mong đợi để lưu trữ trong cơ sở dữ liệu.: More validation can be implemented here to verify the file type is an actual .pdf since that file type is what we are expecting to store in the database.: More validation can be implemented here to verify the file type is an actual .pdf since that file type is what we are expecting to store in the database. Thông tin: Truy cập tài liệu trực tuyến PHP chính thức để biết thêm thông tin về ISSET () và trống ().: Visit the official PHP online documentation for more information on isset() and empty().: Visit the official PHP online documentation for more information on isset() and empty(). Kiểm tra mảng php $ _files để biết lỗi
2 cụ thể này, khối nếu giá trị đó không phải là 0 (không), thì chúng tôi
Liên quan: Xem tài liệu trực tuyến PHP chính thức để biết thêm thông tin về lỗi tải lên tệp.: See the official PHP online documentation for more information on file upload errors.: See the official PHP online documentation for more information on file upload errors. Dữ liệu PHP $ _POST và $ _FILESMảng liên kết 4 và được gửi qua phương thức bài HTTP. Tương tự như vậy, mảng kết hợp BLOB 1 có một số giá trị cho một tệp hoặc tệp đính kèm. Tôi đang gán 2 trong số chúng cho các biến, nhưng chỉ sử dụng một - BLOB 9 - trong mã tiếp theo:
Liên quan: Đọc thêm về các phương thức tải lên bài trong tài liệu PHP trực tuyến chính thức.: Read more about POST upload methods in the official online PHP documentation.: Read more about POST upload methods in the official online PHP documentation. Đọc trong .PDF Dữ liệu nhị phân và chuẩn bị lưu trữ trong cột Blob MySQL với PHPCuộc gọi đến
2 này ________ 24 Thông báo trong khối
Kết nối cơ sở dữ liệu MySQL và các câu lệnh đã chuẩn bịCuối cùng, chúng tôi nhìn vào toàn bộ khối
3. Tôi có tất cả thông tin kết nối cơ sở dữ liệu được lưu trữ trong một tệp riêng có tên 20.Vì chúng tôi đang giới thiệu đầu vào do người dùng cung cấp từ web 4 vào cơ sở dữ liệu, chúng tôi sử dụng các câu lệnh được chuẩn bị tận dụng các phương thức PDO PHP:
Chèn tệp .pdf vào cột blob mysql với PHPNếu cuộc gọi đến 24 không thành công, chúng tôi sẽ tin nhắn cho trình duyệt rằng thông tin không thể được lưu. Mặt khác, dữ liệu được chèn thành công và chúng tôi đã lưu thông tin được lưu:
Lưu ý: Nói chung, nó không phải là một thông lệ tốt đối với 30 block.Sử dụng biểu mẫu để lưu trữ .pdf trong cột blob mysql với PHPHãy để thử dùng biểu mẫu và mã PHP để xác minh các tác phẩm tải lên. Dưới đây là một tệp .pdf mẫu đơn giản mà tôi đã tạo để chạy demo: Nội dung của tài liệu samplepdf.pdf để tải lên với biểu mẫu. Xem ảnh chụp màn hình này trong đó tôi điền vào trường ‘Tên dự án với tên dự án đầu tiên chung và đính kèm tệp SimplePDF.pdf: Đã điền vào biểu mẫu web với tệp đính kèm PDF để tải lên. Khi nhấp vào nút ‘Gửi, thông tin được lưu trữ thành công trong cơ sở dữ liệu và thông báo thành công được hiển thị trong trình duyệt: Thông báo được hiển thị trong trình duyệt sau khi tải lên PDF thành công. Dưới đây là dữ liệu được lưu trong bảng cơ sở dữ liệu MySQL từ tải lên thành công thông qua biểu mẫu web của chúng tôi và mã PHP: Bảng Project_PDF với PDF được chèn và tên dự án. Nó hoạt động !!!Trong bài đăng trên blog tiếp theo, tôi sẽ đề cập đến cách truy xuất tệp .pdf từ cơ sở dữ liệu và hiển thị nó trong trình duyệt. Nếu bạn thấy bất cứ điều gì trong mã mà tôi có thể cải thiện hoặc bất kỳ sai lầm nào, vui lòng cho tôi biết qua phần bình luận bên dưới. Đọc PHP/MySQL bổ sungHãy chắc chắn và truy cập các bài đăng trên blog khác mà tôi đã viết trên PHP và MySQL:
Giống như những gì bạn đã đọc? Xem bất cứ điều gì không chính xác? Hãy bình luận bên dưới và cảm ơn vì đã đọc !!! Lời kêu gọi hành động!Cảm ơn bạn đã dành thời gian để đọc bài viết này. Tôi thực sự hy vọng bạn phát hiện ra một cái gì đó thú vị và khai sáng. Vui lòng chia sẻ những phát hiện của bạn ở đây, với một người khác mà bạn biết ai cũng sẽ nhận được giá trị tương tự từ đó. Truy cập trang dự án danh mục đầu tư để xem bài đăng trên blog/văn bản kỹ thuật tôi đã hoàn thành cho khách hàng.Portfolio-Projects page to see blog post/technical writing I have completed for clients.Portfolio-Projects page to see blog post/technical writing I have completed for clients. Để nhận thông báo qua email (không bao giờ spam) từ blog này (văn xuôi của Digital Digital Owl) cho các bài đăng trên blog mới nhất khi chúng được xuất bản, vui lòng đăng ký (của ý định của riêng bạn) bằng cách nhấp vào nút 'Nhấp để đăng ký!' Trang chủ! . Hãy chắc chắn và truy cập trang Best Best Of cho một bộ sưu tập các bài đăng trên blog tốt nhất của tôi.“Best Of” page for a collection of my best blog posts.“Best Of” page for a collection of my best blog posts. Josh Otwell có một niềm đam mê để nghiên cứu và phát triển như một nhà phát triển và blogger SQL. Các hoạt động yêu thích khác tìm thấy anh ta với mũi được chôn trong một cuốn sách tốt, bài báo hoặc dòng lệnh Linux. Trong số đó, anh chia sẻ tình yêu của các trò chơi game nhập vai, đọc tiểu thuyết giả tưởng và dành thời gian với vợ và hai cô con gái. Tuyên bố miễn trừ trách nhiệm: Các ví dụ được trình bày trong bài đăng này là những ý tưởng giả thuyết về cách đạt được các loại kết quả tương tự. Chúng không phải là giải pháp tốt nhất. Phần lớn, nếu không phải tất cả, các ví dụ được cung cấp, được thực hiện trên một môi trường phát triển/học tập cá nhân và không nên được coi là chất lượng sản xuất hoặc sẵn sàng. Mục tiêu và nhu cầu cụ thể của bạn có thể khác nhau. Sử dụng những thực hành có lợi nhất cho nhu cầu và mục tiêu của bạn. Ý kiến là của riêng tôi. Nhiều cách tôi có thể giúp
Tiết lộ: Một số dịch vụ và liên kết sản phẩm trong bài đăng này là các liên kết liên kết. Không có chi phí bổ sung cho bạn, nếu bạn mua hàng bằng cách nhấp qua một trong số họ, tôi sẽ nhận được một khoản hoa hồng.: Some of the services and product links in this post are affiliate links. At no additional cost to you, should you make a purchase by clicking through one of them, I will receive a commission.: Some of the services and product links in this post are affiliate links. At no additional cost to you, should you make a purchase by clicking through one of them, I will receive a commission. Bản tin cho các nhà phát triển PHP và MySQLNhận một bản sao của Sách điện tử của tôi, 10 Lời khuyên của MySQL cho mọi người, hoàn toàn miễn phí khi bạn đăng ký nhận bản tin OpenLamptech.absolutely free when you subscribe to the OpenLampTech newsletter. absolutely free when you subscribe to the OpenLampTech newsletter. Chúng ta có thể lưu trữ pdf trong blob không?PDFS có thể được tải từ các tệp, luồng và mảng nhị phân từ- và được lưu. Tất cả đều có thể làm việc với lưu trữ blob.All of which can work with blob storage.All of which can work with blob storage. Tôi có thể tải PDF lên mysql không?Hàm Move_uploaded_file () được sử dụng để tải tệp PDF lên máy chủ. Chúng tôi đang chuyển 2 giá trị, tên tệp tạm thời và thư mục nơi tệp sẽ được lưu trữ. Các tệp sẽ được lưu trữ trong thư mục GeekSforGeeks/ PDF/ PDF/ mà chúng tôi đã tạo trước đó.. We are passing 2 values, the temporary file name and the folder where the file will be stored. The files will be stored in the “GeeksForGeeks/pdf/ ” folder which we created earlier.. We are passing 2 values, the temporary file name and the folder where the file will be stored. The files will be stored in the “GeeksForGeeks/pdf/ ” folder which we created earlier. Làm thế nào để bạn chèn hình ảnh vào MySQL và hiển thị chúng bằng 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 chọn tệp hình ảnh để tải lên .. Truy xuất nội dung của tệp hình ảnh bằng TMP_NAME bằng cách sử dụ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 lên người dùng .. PDF có thể được lưu trữ trong cơ sở dữ liệu không?Các tệp PDF là dữ liệu không cấu trúc hoặc bán cấu trúc, điều đó có nghĩa là chúng không có lược đồ cố định.Điều này có nghĩa là nó có thể là một thách thức để lưu trữ nội dung tệp PDF trong cơ sở dữ liệu SQL truyền thống.Tuy nhiên, cơ sở dữ liệu NoQuery là lý tưởng để lưu trữ nội dung tệp PDF vì nó không yêu cầu lược đồ được xác định trước.a NoSQL database is ideal for storing PDF file contents because it doesn't require a predefined schema.a NoSQL database is ideal for storing PDF file contents because it doesn't require a predefined schema. |