Hướng dẫn how can i download uploaded file in php? - Làm cách nào để tải xuống tệp đã tải lên trong php?

Hướng dẫn này cho thấy cách bạn có thể tải lên các tệp của các định dạng khác nhau bao gồm .zip, .pdf, .docx, .ppt, cũng như các tệp hình ảnh thông qua một biểu mẫu sử dụng PHP để được lưu trữ trong thư mục trên máy chủ của chúng tôi.

Chúng tôi cũng sẽ ghi lại tên của các tệp được tải lên và thông tin liên quan như tên tệp, kích thước và số lượng tải xuống trong bảng cơ sở dữ liệu.

Tạo một thư mục dự án Php & nbsp; Gọi nó là & amp; Tạo một thư mục con bên trong thư mục này có tên & lt; span class = "đánh dấu" & gt; uploads & lt;/span & gt; . & lt; p & gt; & lt; span class = "đánh dấu" & gt; index.php & lt;/span & gt; là nơi chúng tôi sẽ tạo biểu mẫu tải lên tệp của chúng tôi. Mở nó và đặt mã này bên trong nó: & lt;/p & gt; & lt; div class = "trung tâm văn bản vuông" & gt; & lt; span id = "ezoic-pub-ad-lobleholder-102" & gt; & lt;/span & gt; & lt; span class = " 102 "data-ez-name =" codewithawa_com-box-4 "& gt; & lt; span id =" div-gpt-ad-codewithawa_com-box-4-0 "ezaw =" 580 "ezah =" 400 "style =" Vị trí: tương đối; z-index: 0; hiển thị: block inline; padding: 0; min-height: 400px; min-width: 580px "class =" ezoic-ad "& gt; & lt; "data-cfasync =" false "type =" text/javaScript "style =" display: none "& gt; if (typeof ez_ad_units! = 'không xác định') {ez_ad_units.push ([[580,400] ',' ezslot_3 ', 102,' 0 ',' 0 '])}; index.php: & lt;? PHP bao gồm 'filesLogic.php';? & gt; & lt;! DOCTYPE HTML & GT; & lt; html lang = "en" & gt; & lt; đầu & gt; & lt; link rel = "styleSheet" href = "style.css" & gt; & lt; Tiêu đề & gt; tập tin tải lên và tải xuống & lt;/tiêu đề & gt; & lt;/head & gt; & lt; cơ thể & gt; & lt; div class = "container" & gt; & lt; div class = "hàng" & gt; & lt; form action = "index.php" meath & lt; H3 & gt; Tải lên tệp & lt;/h3 & gt; & lt; loại đầu vào = "file" name = "myfile" & gt; & lt; br & gt; & lt; loại nút = "Gửi" name = "lưu" & gt; tải lên & lt;/nút & gt; & lt;/form & gt; & lt;/div & gt; & lt;/div & gt; & lt;/cơ thể & gt; & lt;/html & gt; Đó là một hình thức rất đơn giản chỉ lấy trường đầu vào cho tệp của chúng tôi và nút tải lên. & NBSP; Trong phần đầu, chúng tôi đang liên kết với tệp Style.css của chúng tôi để cung cấp một số kiểu dáng cho biểu mẫu của chúng tôi. Tạo tệp đó trong gốc của ứng dụng của chúng tôi và thêm mã CSS này vào nó: style.css: form {width: 30%; Biên độ: 100px Tự động; Đệm: 30px; Biên giới: 1px rắn #555; } đầu vào {chiều rộng: 100%; Biên giới: 1px rắn #F1E1E1; Hiển thị: Khối; Đệm: 5px 10px; } nút {viền: Không có; Đệm: 10px; Biên giới-Radius: 5px; } bảng {chiều rộng: 60%; Thu hẹp biên giới: sụp đổ; Biên độ: 100px Tự động; } th, td {chiều cao: 50px; dọc-align: trung tâm; Biên giới: 1px màu đen rắn; } (vitag.init = window.vitag.init || []).

Ở đầu index.php, chúng tôi bao gồm & nbsp; fileslogic.php. Đây là tệp chứa tất cả logic nhận tệp đã gửi của chúng tôi & nbsp; và lưu nó vào thư mục tải lên cũng như lưu trữ thông tin tệp trong cơ sở dữ liệu. Hãy tạo tệp này ngay bây giờ.filesLogic.php file. This is the file that contains all the logic of receiving our submitted file and saving it to the uploads folder as well as storing the file information in the database. Let's create this file now.

filesLogic.php::

 1000000) { // file shouldn't be larger than 1Megabyte
        echo "File too large!";
    } else {
        // move the uploaded (temporary) file to the specified destination
        if (move_uploaded_file($file, $destination)) {
            $sql = "INSERT INTO files (name, size, downloads) VALUES ('$filename', $size, 0)";
            if (mysqli_query($conn, $sql)) {
                echo "File uploaded successfully";
            }
        } else {
            echo "Failed to upload file.";
        }
    }
}

Ở đầu tệp này, chúng tôi đang kết nối với cơ sở dữ liệu nhưng chúng tôi vẫn chưa tạo nó. Hãy làm điều đó ngay bây giờ.

Tạo một cơ sở dữ liệu mới được gọi là quản lý tệp. Trong cơ sở dữ liệu này, hãy tạo một bảng có tên Files & NBSP; và cung cấp cho nó các trường sau.file-management. Under this database, create a table called files and give it the following fields.

  • ID - int
  • Tên - Varchar (255) & NBSP;
  • Kích thước - int
  • Tải xuống

Bây giờ mở tệp index.php trong trình duyệt của bạn. Đối với tôi, tôi sẽ đi đến & nbsp; http: //localhost/file-upload-download/doad.php.index.php file in your browser. For me, I'll head over to http://localhost/file-upload-download/download.php.

Nhấp vào trường đầu vào tệp và chọn bất kỳ tệp nào từ máy của bạn để tải lên. & NBSP;

Lưu ý: Tùy thuộc vào cấu hình PHP của bạn, tệp của bạn có thể không tải lên nếu kích thước vượt quá giá trị tải lên_max_filesize được đặt trong tệp php.ini của bạn. Bạn luôn có thể định cấu hình thông tin này trong tệp php.ini của mình. Tăng các giá trị của & nbsp; post_max_size và & nbsp; upload_max_filesize & nbsp;. & nbsp;post_max_size and upload_max_filesize 

Sau khi chọn tệp của bạn, bạn có thể nhấp vào nút Tải lên. Nếu mọi thứ suôn sẻ, tệp của bạn sẽ được tải lên thư mục tải lên trong dự án của bạn và bản ghi mới sẽ được tạo trong bảng tệp trong cơ sở dữ liệu chứa tên tệp, kích thước và số tải xuống.uploads folder in your project and a new record will be created in the files table in the database containing the filename, size, and downloads count.

Bây giờ tập tin của chúng tôi đã được tải lên. Bạn có thể kiểm tra thư mục tải lên và bảng cơ sở dữ liệu để xác nhận rằng nó đã thành công. Hãy hiển thị nó để người dùng có thể xem nó và nhấp vào nó để tải xuống. Đầu tiên, chúng ta cần tìm nạp thông tin tệp từ cơ sở dữ liệu. & NBSP;uploads folder and database table to confirm that it was successful. Let's display it so that the user can view it and click on it to download it. First, we need to fetch the file info from the database. 

Mở FilesLogic.php và thêm 3 dòng mã này ngay bên dưới dòng nơi chúng tôi kết nối với cơ sở dữ liệu:filesLogic.php and add these 3 lines of code just below the line where we connect to the database:

Điều này chọn tất cả thông tin tệp từ cơ sở dữ liệu và đặt nó thành một biến mảng có tên $ Files.

Bây giờ, hãy tạo một tệp có tên Tải xuống.php trong thư mục gốc của ứng dụng của chúng tôi và thêm mã này bên trong nó:downloads.php in the root folder of our application and add this code inside it:

downloads.php::





  
  
  Download files



ID Filename size (in mb) Downloads Action
Download

& nbsp; bây giờ trên trang này, & nbsp; thông tin tệp từ cơ sở dữ liệu được liệt kê cùng với kích thước của nó trong KB và số lượng tải xuống. Ngoài ra còn có một nút tải xuống so với mỗi tệp. Những gì còn lại bây giờ là mã thực sự tải xuống tệp từ thư mục tải lên của chúng tôi. Hãy viết mã ngay lập tức.uploads folder. Let's write the code right away.

Mở một lần nữa FilesLogic.php và thêm mã này ở cuối tệp:

filesLogic.php::


// Downloads files
if (isset($_GET['file_id'])) {
    $id = $_GET['file_id'];

    // fetch file to download from database
    $sql = "SELECT * FROM files WHERE id=$id";
    $result = mysqli_query($conn, $sql);

    $file = mysqli_fetch_assoc($result);
    $filepath = 'uploads/' . $file['name'];

    if (file_exists($filepath)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename=' . basename($filepath));
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize('uploads/' . $file['name']));
        readfile('uploads/' . $file['name']);

        // Now update downloads count
        $newCount = $file['downloads'] + 1;
        $updateQuery = "UPDATE files SET downloads=$newCount WHERE id=$id";
        mysqli_query($conn, $updateQuery);
        exit;
    }

}

Khi chúng tôi liệt kê các tệp, mỗi nút tải xuống (hay đúng hơn là liên kết tải xuống) có một tham số có tên FILE_ID & NBSP; được đính kèm với nó. Vì vậy, khi bạn nhấp vào liên kết tải xuống của một tệp, ID của tệp đó được gửi đến trang fileslogic.php và bị lấy bởi đoạn mã này mà chúng tôi vừa thêm ngay bây giờ. & NBSP;file_id attached to it. So when you click on the download link of a file, that file's id is sent to the filesLogic.php page and is grabbed by this piece of code we just added now. 

Mã sau đó tìm nạp thông tin tệp cụ thể đó từ cơ sở dữ liệu bằng tham số FILE_ID và sau đó lưu trữ thông tin tệp trong một biến có tên $ Tệp. Sử dụng phương thức File_Exists () của PHP với & nbsp; đường dẫn đầy đủ đến tệp của chúng tôi như một đối số, chúng tôi kiểm tra xem tệp có thực sự tồn tại trong thư mục tải lên của chúng tôi không. Sau đó, chúng tôi tiến hành đặt một số tiêu đề và cuối cùng trả lời với tệp cho người dùng bằng hàm readfile () trong PHP.file_id parameter and then stores the file info in a variable called $file. Using PHP's file_exists() method with the full path to our file as an argument we check that the file actually exists in our uploads folder. Then we proceed to set some headers and finally respond with the file to the user using the readFile() function in PHP.

Sau khi tệp được tải xuống, chúng tôi cập nhật số tải xuống cho tệp cụ thể đó trong cơ sở dữ liệu. & NBSP;

Sự kết luận

Đó là về nó với tải lên và tải xuống tệp. Bạn có thể tùy chỉnh thêm & nbsp; nó để xây dựng các ứng dụng PHP mát mẻ. Cảm ơn rất nhiều vì đã theo dõi. Hãy cho tôi biết bạn nghĩ gì về bài viết này trong phần bình luận bên dưới, nếu bạn vui lòng.

Chúc vui vẻ!

Awa Melvine

Tạo tập lệnh tải lên tập lệnh PHP Php được giải thích: $ target_dir = "Tải lên/" - Chỉ định thư mục nơi tệp sẽ được đặt. $ target_file chỉ định đường dẫn của tệp sẽ được tải lên. $ uploadok = 1 chưa được sử dụng (sẽ được sử dụng sau)

Tạo tập lệnh tải lên tập lệnh PHP Php được giải thích: $ target_dir = "Tải lên/" - Chỉ định thư mục nơi tệp sẽ được đặt. $ target_file chỉ định đường dẫn của tệp sẽ được tải lên. $ uploadok = 1 chưa được sử dụng (sẽ được sử dụng sau)

Làm cách nào để tải xuống tệp từ PHP?

PHP cho phép bạn tải xuống tệp dễ dàng bằng hàm readfile () tích hợp.Hàm readfile () đọc một tệp và ghi nó vào bộ đệm đầu ra ...
Tiêu đề ('Loại nội dung: Ứng dụng/Dòng octet') ;.
Tiêu đề ('Loại nội dung: Ứng dụng/Dòng octet') ;.
Tiêu đề ("Mã hóa chuyển đổi nội dung: UTF-8") ;.

Làm cách nào để xem các tệp đã tải lên trong PHP?

Trong PHP, chúng ta có thể truy cập tên thực tế của tệp mà chúng ta đang tải lên bởi từ khóa $ _FILES [Tệp File] [Tên Tên].$ _Files là từ khóa mặc định trong PHP để truy cập các chi tiết của các tệp mà chúng tôi đã tải lên.Tệp đề cập đến tên được xác định trong chỉ mục trên mạng.Hình thức HTML trong đầu vào của tệp.by keyword $_FILES[“file”][“name”]. The $_FILES is the by default keyword in PHP to access the details of files that we uploaded. The file refers to the name which is defined in the “index. html” form in the input of the file.

Tôi có thể tải xuống tệp PHP từ URL không?

PHP của trang web biên dịch thành HTML và không thể đảo ngược trở lại PHP gốc.Từ bất kỳ trang web nào có tệp PHP để tải xuống, bạn chỉ cần nhấp vào liên kết tải xuống.Tuy nhiên, bạn không thể tải xuống PHP đang chạy trên trang web - nó không được thiết lập để tải xuống.From any website that has PHP files for download, you just click the download link. You can't download the PHP that's running on the site, though - it's not set up for downloading.