Tôi có thể tải pdf lên mysql khô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 đ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…

Tải tệp lên cơ sở dữ liệu MySQL - Hướng dẫn PHP MySQL

1 trên 7

http. //www. php-mysql-hướng dẫn. com/wiki/mysql-tutorial

Hướng dẫn PHP MySQL Tìm hiểu PHP và MySQL

Tải tệp lên cơ sở dữ liệu MySQL Sử dụng PHP để tải tệp lên cơ sở dữ liệu MySQL đôi khi cần thiết bởi một số ứng dụng web. Ví dụ: để lưu trữ tài liệu pdf hoặc hình ảnh để tạo một số loại cặp trực tuyến (như cặp Yahoo). Đối với bước đầu tiên, hãy tạo bảng cho các tệp tải lên. Bảng sẽ bao gồm. 1. 2. 3. 4. 5

Tôi. Id duy nhất cho mỗi tên tệp. Loại tên tệp. Kích thước loại nội dung tệp. Nội dung kích thước tệp. Bản thân tập tin

Đối với nội dung cột, chúng tôi sẽ sử dụng kiểu dữ liệu BLOB. BLOB là một đối tượng lớn nhị phân có thể chứa một lượng dữ liệu thay đổi. MySQL có bốn kiểu dữ liệu BLOB, chúng là. TINYBLOB BLOB MEDIUMBLOB LONGBLOB Vì BLOB bị giới hạn lưu trữ tối đa 64 kilobyte dữ liệu nên chúng tôi sẽ sử dụng MEDIUMBLOB để có thể lưu trữ các tệp lớn hơn ( tối đa 16 megabyte ). TẠO BẢNG tải lên ( id INT NOT NULL AUTO_INCREMENT, tên VARCHAR(30) NOT NULL, nhập VARCHAR(30) NOT NULL, kích thước INT NOT NULL, nội dung MEDIUMBLOB NOT NULL, PRIMARY KEY(id) ); . Trước tiên, bạn cần tải tệp lên máy chủ, sau đó đọc tệp và chèn nó vào MySQL. Để tải lên tệp, chúng tôi cần một biểu mẫu để người dùng nhập tên tệp hoặc duyệt qua máy tính của họ và chọn tệp. Loại đầu vào = "tệp" được sử dụng cho mục đích đó

Thí dụ. tải lên. mã nguồn php. tải lên. php

Biểu mẫu tải lên phải có encytype="multipart/form-data" nếu không biểu mẫu sẽ không hoạt động. Tất nhiên, phương thức biểu mẫu cũng cần được đặt thành method="post". Ngoài ra, hãy nhớ đặt đầu vào ẩn MAX_FILE_SIZE trước đầu vào tệp. Đó là để hạn chế kích thước của tập tin

31/3/2014 3. 16 giờ chiều

Tải tệp lên cơ sở dữ liệu MySQL - Hướng dẫn PHP MySQL

2 trên 7

http. //www. php-mysql-hướng dẫn. com/wiki/mysql-tutorial

Sau khi biểu mẫu được gửi, chúng ta cần đọc autoglobal $_FILES. Trong ví dụ trên, tên đầu vào của tệp là userfile nên nội dung của $_FILES là như thế này. $_FILES['userfile']['name'] Tên ban đầu của tệp trên máy khách. $_FILES['userfile']['type'] Loại mime của tệp, nếu trình duyệt cung cấp thông tin này. Một ví dụ sẽ là "hình ảnh/gif". $_FILES['userfile']['size'] Kích thước, tính bằng byte, của tệp đã tải lên. $_FILES['userfile']['tmp_name'] Tên tệp tạm thời của tệp mà tệp đã tải lên được lưu trữ trên máy chủ. $_FILES['userfile']['error'] Mã lỗi liên quan đến việc tải lên tệp này. ['lỗi'] đã được thêm vào trong PHP 4. 2. 0

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 hoàn thành việc tải lên và lưu trữ tệp thực tế. pdf trong cột BLOB trong MySQL bằng PHP. Mọi chỉnh sửa, mẹo, gợi ý và đề xuất cho các phương pháp hay nhất luôn được hoan nghênh. Tất cả chúng ta đều học khi chúng ta đi

Bản tin dành cho các nhà phát triển PHP và MySQL

Nhận bản sao sách điện tử của tôi, “10 mẹo MySQL cho mọi người”, hoàn toàn miễn phí khi bạn đăng ký nhận bản tin của OpenLampTech.

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Ảnh của Laika Notebooks trên Bapt


Thúc đẩy

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, những người cũng có thể được hưởng lợi hoặc thích nội dung đó. Vì cà phê là thức uống yêu thích của tôi nên bạn thậm chí có thể mua cho tôi một ly nếu muốn.


Tôi đang sử dụng 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

  • 'Tôi'. loại INTEGER
  • 'Tên dự án'. loại TEXT
  • 'pdf_doc'. loại 1_______

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Cấu trúc bảng cho bảng project_pdf

Với trang web HTML đơn giản dưới đây form, chúng tôi có thể thu thập 'project_name' và kích hoạt. tải lên tệp đính kèm tệp pdf

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Biểu mẫu web đơn giản để tải pdf lên cơ sở dữ liệu

Dưới đây là mã nguồn HTML của trang web trên form

    < liên kết rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" tính toàn vẹn ="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" nguồn gốc chéo ="anonymous"/>
    < tiêu đề >Tải PDF lên< /tiêu đề<>


    < /p >< h4 class="text-center" style="margin-top: 100px;" >Tải PDF lên Cơ sở dữ liệu< /h4 >
< div class="d-flexjust . 115px;" style="margin-top: 115px;" >
    < biểu mẫu hành động="gửi. php" phương thức="POST" bộ ký tự chấp nhận="utf-8" enctype="multipart/form-data">
        < div class="formgroup container-fluid>
            < nhãn cho="project_name">Project Name</label>
            < nhập loại="văn bản" name="project_name"/>
        < /div >
        < div class="formgroup container-fluid>
            < đầu vào loại="tệp" name="pdf_file" accept=".pdf"/ >
            < đầu vào loại="ẩn" name="MAX_FILE_SIZE" value="67108864"/>
       


           


       

   




Khám phá các bài báo cao cấp, hướng dẫn chuyên sâu, video hướng dẫn, v.v. bằng cách tham gia tư cách thành viên “MySQL Learning Tier”. Bạn có quyền truy cập vào nội dung độc quyền chưa được xuất bản ở bất kỳ nơi nào khác với tư cách thành viên này. Với nội dung mới được bổ sung thường xuyên, hãy tiếp tục học MySQL ở mọi cấp độ

Học MySQL


Nhìn vào mã…

Chúng tôi sẽ sử dụng mã PHP này được lưu trữ trong một tập lệnh submit.php – đó là form action – cùng với một số phương pháp hay nhất bằng cách sử dụng các khối điều kiện BLOB0 và gói tất cả các hoạt động cơ sở dữ liệu trong một khối BLOB1 để hoàn thành. pdf BLOB2 trong cột BLOB của MySQL

<. --?php?php
if (isset($_POST['submit']) && !trống($_FILES['pdf_file']['name'])) {
      //giá trị 'lỗi' $_FILES bằng 0 có nghĩa là thành công. Bất cứ điều gì khác và một cái gì đó sai với tập tin đính kèm.
    if ($_FILES['pdf_file']['error'] != 0) {
        echo 'Đã xảy ra lỗi với tệp. ';
    } else { //đã tải tệp pdf lên được.
        //tên_dự án được cung cấp từ trường biểu mẫu
        $project_name = htmlký tự đặc biệt($_POST['project_name']);

        //thông tin tệp pdf đính kèm
          $file_name = $_FILES['pdf_file']['name'];
          $file_tmp = $_FILES['pdf_file']['tmp_name'];
        if ($pdf_blob = fopen($file_tmp, "rb")) {
          thử {
              bao gồm __DIR__ . "/gồm/Kết nối cơ sở dữ liệu. php";

              $insert_sql = "INSERT INTO `project_pdf` (`project_name`, `pdf_doc`)
GIÁ TRỊ(. Tên dự án,. pdf_doc);"
;

                $stmt = $pdo--->prepare($insert_sql);
                $stmt-& gt ;bindParam(':project_name', $project_name);
                $stmt-& gt ;bindParam(':pdf_doc', $pdf_blob, PDO ::PARAM_LOB);

              if ($stmt-&gt;execute() === FALSE) {
                  echo 'Không thể lưu thông tin vào cơ sở dữ liệu';
                } else {
                  echo 'Thông tin đã lưu';
              }
            } bắt ( PDOException $e) {
              echo 'Lỗi cơ sở dữ liệu '. $e-& gt ;getMessage(). ' trong '. $e-& gt ;getFile().
                    '. '. $e-& gt ;getLine();
            }
        } khác {
            //fopen() không mở thành công. tập tin pdf để đọc.
            echo 'Không thể mở tệp pdf đính kèm';
        }
    }
} khác {
    //chưa nhấp vào nút gửi. Không có điều hướng tập lệnh trực tiếp.
    tiêu đề('Vị trí. chọn tập tin. php');
}

Xác minh rằng nút được nhấp và một tệp được đính kèm

Khối BLOB0 đầu tiên xác minh rằng nút 'gửi' từ form đã được nhấp và trường 'tệp pdf' có tệp đính kèm bằng cách sử dụng các hàm PHP BLOB6 và BLOB7 (nghịch lý của sự thật bằng cách phủ định với not. toán tử cho hàm BLOB7)

1

isset($_POST['submit'< . ]) && !trống($_FILES['pdf_file']['name']))

Mẹo. Có thể triển khai thêm xác thực tại đây để xác minh loại tệp là thực tế. pdf vì loại tệp đó là những gì chúng tôi muốn lưu trữ trong cơ sở dữ liệu

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à empty()

Kiểm tra mảng PHP $ _FILES để tìm lỗi

BLOB9 INTEGER0 cung cấp một số mã lỗi liên quan cho tệp đính kèm. Giá trị 0 (không) có nghĩa là mọi thứ đều ổn với tệp và tệp được tải lên thành công. Trong BLOB0 cụ thể này, chặn nếu giá trị đó không phải là 0 (không), sau đó chúng tôi INTEGER2 trong trình duyệt có lỗi xảy ra với tệp tải lên

1

$_FILES['pdf_file'][< . ='error'] != 0

Có 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

Dữ liệu PHP $_POST và $_FILES

Mảng kết hợp INTEGER3 có giá trị cho trường ‘project_name’ INTEGER4 được ghi lại trong form và được gửi qua phương thức HTTP POST. Tương tự như vậy, mảng kết hợp BLOB9 có một số giá trị cho 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 – INTEGER7 – trong đoạn mã tiếp theo

  • INTEGER8 – Tên tệp thực tế từ khách hàng. (Có thể dùng trong cột tên tệp nếu cần
  • INTEGER7 – Tên tệp tạm thời của tệp đã tải lên như được lưu trữ trên máy chủ

1
2
3

$project_name = htmlký tự đặc biệt($_POST['project_name']);
$file_name = $_FILES['pdf_file']['name'];
$file_tmp = $_FILES['pdf_file']['tmp_name'];

Có liên quan. Đọc thêm về các phương thức tải lên POST trong tài liệu PHP trực tuyến chính thức

Đọc trong. pdf dữ liệu nhị phân và chuẩn bị lưu trữ trong cột BLOB của MySQL bằng PHP

Lệnh gọi tới TEXT0 đọc trong tệp ở định dạng nhị phân (TEXT1) thành một biến '$pdf_blob'. Nếu TEXT0 không thể mở tệp, khối BLOB0 này INTEGER2 là thông báo trong khối TEXT5 tới trình duyệt

1

$pdf_blob = fopen($file_tmp, "rb")


Kết nối cơ sở dữ liệu MySQL và báo cáo chuẩn bị

Cuối cùng, chúng tôi xem xét toàn bộ khối BLOB1

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 TEXT7 và đưa nó vào tập lệnh tại thời điểm này bằng cách sử dụng chỉ thị TEXT8

Vì chúng tôi đang giới thiệu đầu vào do người dùng cung cấp từ trang web form vào cơ sở dữ liệu, nên chúng tôi sử dụng các câu lệnh đã chuẩn bị tận dụng các phương thức PDO của PHP

  • BLOB0
  • BLOB1
  • BLOB2

CHÈN. pdf vào cột BLOB của MySQL bằng PHP

Nếu cuộc gọi tới BLOB2 không thành công, chúng tôi sẽ gửi thông báo tới trình duyệt cho INTEGER2 rằng không thể lưu thông tin. Nếu không, dữ liệu được chèn thành công và chúng tôi INTEGER2 ‘Thông tin được lưu’

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

thử {
    bao gồm __DIR__ . "/gồm/Kết nối cơ sở dữ liệu. php";

    $insert_sql = "CHÈN VÀO `project_pdf` (`tên_dự án`, `pdf_doc`)
GIÁ TRỊ(. Tên dự án,. pdf_doc);"
;

    $stmt = $pdo->prepare($insert_sql);
    $stmt->bindParam(':project_name', $project_name);
    $stmt->bindParam(':pdf_doc', $pdf_blob, PDO ::PARAM_LOB);

    if ($stmt->execute() === FALSE) {
        echo 'Không thể lưu thông tin vào cơ sở dữ liệu';
    } khác {
        echo 'Thông tin đã lưu';
    }
} bắt ( PDOException $e) {
    echo 'Lỗi cơ sở dữ liệu '. $e->getMessage(). ' trong '. $e->getFile().
        '. '. $e->getLine();   
}

Ghi chú. Thông thường, việc cung cấp bất kỳ loại thông tin lỗi cơ sở dữ liệu nào cho trình duyệt không phải là một cách làm tốt. Thay vào đó, lỗi nên được ghi vào tệp nhật ký. Tuy nhiên, với mục đích của bài đăng trên blog này như một kinh nghiệm học tập, tôi INTEGER2 đưa ra bất kỳ trường hợp ngoại lệ nào có thể phát sinh trong khối BLOB8


Sử dụng biểu mẫu để lưu trữ. pdf trong cột BLOB của MySQL với PHP

Hãy thử biểu mẫu và mã PHP để xác minh quá trình tải lên hoạt động. Đây là một mẫu đơn giản. tệp pdf tôi đã tạo để chạy bản demo

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Nội dung của PDF mẫu. tài liệu pdf để tải lên với 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 chung 'Dự án đầu tiên' và đính kèm SimplePDF. file PDF

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Đ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

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Thông báo hiển thị trong trình duyệt sau khi tải lên pdf thành công

Đây là dữ liệu được lưu trong bảng cơ sở dữ liệu MySQL từ quá trình tải lên thành công qua biểu mẫu web của chúng tôi và mã PHP

Tôi có thể tải pdf lên mysql không?
Tôi có thể tải pdf lên mysql không?
Bảng project_pdf có chèn pdf 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. 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ỳ lỗi nào, vui lòng cho tôi biết qua phần nhận xét bên dưới

Đọc PHP/MySQL bổ sung

Hãy chắc chắn và truy cập các bài đăng trên blog khác mà tôi đã viết về PHP và MySQL

  • Phương thức PHP PDO lastInsertId() với các ví dụ trong MySQL
  • Phối cảnh ban đầu về mảng PHP
  • Sắp xếp mảng kết hợp trong PHP với array_multisort() – Học mới
  • Trình đơn thả xuống HTML động với PHP và MySQL

Giống như những gì bạn đã đọ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 đã khám phá ra điều 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 người khác mà bạn biết, người cũng sẽ nhận được giá trị tương tự từ nó

Truy cập trang Danh mục đầu tư-Dự án để xem bài đăng trên blog/bài viết kỹ thuật mà tôi đã hoàn thành cho khách hàng.


Để nhận thông báo qua email (Không bao giờ là thư rác) từ blog này (“Văn xuôi của cú kỹ thuật số”) cho các bài đăng blog mới nhất khi chúng được xuất bản, vui lòng đăng ký (theo ý muốn của bạn) bằng cách nhấp vào nút 'Nhấp để đăng ký'. ’ trong thanh bên trên trang chủ. (Vui lòng xem lại Trang chính sách bảo mật văn xuôi của Digital Owl bất cứ lúc nào để biết bất kỳ câu hỏi nào bạn có thể có về. cập nhật email, chọn tham gia, từ chối, biểu mẫu liên hệ, v.v.)

Hãy chắc chắn và truy cập trang “Hay nhất” để có bộ sưu tập các bài đăng blog hay nhất của tôi.


Josh Otwell có niềm đam mê học tập và phát triển với tư cách là Nhà phát triển SQL và người viết blog. Các hoạt động yêu thích khác khiến anh ta chúi mũi vào một cuốn sách hay, một bài báo hoặc dòng lệnh Linux. Trong số đó, anh ấy chia sẻ niềm yêu thích với các trò chơi RPG trên máy tính bảng, đọc tiểu thuyết giả tưởng và dành thời gian cho vợ và hai con gái.

từ chối 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ả định về cách đạt được các loại kết quả tương tự. Chúng không phải là (các) giải pháp tối ưu 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ôi trường máy trạm học tập/phát triển 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ể thay đổi. Sử dụng những phương pháp 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 khác tôi có thể giúp

  • Bắt đầu một blog? . Hãy để cả hai tiết kiệm tiền cho các kế hoạch được cung cấp. 💸
  • Thu hút sự chú ý đến thương hiệu, sản phẩm hoặc dịch vụ của bạn với vị trí quảng cáo được phân loại giá cả phải chăng trong bản tin OpenLampTech
  • Cần lưu trữ cho ứng dụng web hoặc trang web WordPress tiếp theo của bạn? . Dịch vụ này không ai sánh kịp và họ cung cấp SSL miễn phí
  • 🔒5 sự thật tôi nhận ra với tư cách là một nhà phát triển tự học

Tiết lộ. Một số dịch vụ và liên kết sản phẩm của bài đăng trên blog này là các liên kết liên kết. Bạn không phải trả thêm phí, nếu bạn mua hàng bằng cách nhấp qua một trong số chúng, tôi sẽ nhận được hoa hồng

Chúng tôi có thể tải lên PDF trong MySQL không?

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.v. .

Làm cách nào để chèn PDF vào MySQL?

Trong bài viết này, chúng ta sẽ xem cách tải tệp PDF lên cơ sở dữ liệu MySQL bằng PHP. .
Tiếp cận. Đảm bảo bạn đã cài đặt XAMPP hoặc WAMP trên máy của mình. .
Tạo cơ sở dữ liệu và bảng
Tạo thư mục và tập tin
Tạo biểu mẫu. Với biểu mẫu HTML, chúng tôi đang thu thập dữ liệu từ người dùng bằng cách bật

Chúng tôi có thể tải lên PDF bằng SQL không?

Sử dụng bảng tệp, mọi tài liệu hoặc PDF hoặc bất kỳ tệp nào có thể được lưu trữ trong Máy chủ SQL .

Làm cách nào để chèn tệp PDF vào cơ sở dữ liệu SQL?

5. Câu lệnh INSERT là một phần tiêu chuẩn của lập trình cơ sở dữ liệu SQL. Ở đây, INSERT thêm một bản ghi vào bảng, "db_table. " Câu lệnh SELECT cấp dưới sử dụng hàm OPENROWSET để mở và đọc tệp PDF," c. \pdf_files\your_document. pdf," và chuyển trực tiếp dữ liệu của nó sang trường BLOB, "PDF_field. "