hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Lập trình PHP
  • Lập trình PHP cơ bản
Xử lý file (tập tin) trong PHP

Xử lý file (tập tin) trong PHP

  • 13-03-2023
  • Toanngo92
  • 0 Comments

Mục lục

  • Upload file
  • Tạo form upload và xử lý upload
  • Mở file/ đóng file
  • Đọc file
  • Ghi file
  • Xóa file
  • Thao tác với file

Upload file

Các tệp có thể được tải lên máy chủ bằng cách sử dụng tập lệnh PHP cùng với biểu mẫu HTML, Ban đầu, các tệp được tải lên một thư mục tạm thời. Thông qua tập lệnh PHP, các tệp này sau đó có thể được chuyển đến đích đích sau đó. Để kiểm tra, bạn có thể sử dụng hàm phpinfo() chứa thông tin xác định thư mục tạm thời, đó là upload_tmp_dir, được sử dụng để tải tệp lên. Nó cũng bao gồm upload_max_size mô tả kích thước tệp tối đa được phép có thể tải lên thành công. Tệp cấu hình php.ini PHP bao gồm các tham số này.

Người dùng có thể thực hiện quy trình sau để tải tệp lên:

  • Mở trang bao gồm một biểu mẫu HTML có nút gửi, nút duyệt và tệp văn bản.
  • Nhấp hoặc nhấn vào nút duyệt để chọn tệp để tải lên từ máy tính.
  • Đường dẫn đầy đủ của tệp đã chọn hiển thị trong trường văn bản. Nhấp vào nút gửi.
  • Tệp đã chọn sẽ được chuyển vào thư mục tạm thời của máy chủ.
  • Tập lệnh PHP được chỉ định làm trình xử lý biểu mẫu nằm trong thuộc tính action khi file đã đưược chọn
  • Sau đó, tập tin được sao chép vào thư mục định sẵn.
  • Cuối cùng, tập lệnh PHP xác nhận thành công cho người dùng.

Lưu ý: phải có quyền ghi tệp cho cả vị trí (thư mục) cuối cùng và tạm thời. Quá trình chắc chắn sẽ thất bại nếu một trong hai điều này được xác định là chỉ đọc. Một tệp được tải lên có thể là một định dạng file bất kỳ như tài liệu, tệp hình ảnh hoặc tệp văn bản….

Tạo form upload và xử lý upload

Sử dụng biểu mẫu HTML, mã PHP cho phép người dùng tải tệp lên máy chủ. Ban đầu, các tệp được đặt trong một thư mục tạm thời. Sau đó, một tập lệnh PHP được sử dụng để di chuyển các tệp đến thư mục đích.

Ví dụ:

Tạo file php ví dụ uploadfile.php và viết HTML form kèm một <input type=”file”/>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="file1">
        <input type="submit" name="submit" value="Upload">
    </form>
</body>

</html>

Biến PHP toàn cục $_FILES là một mảng hai chiều liên kết duy trì tất cả thông tin bắt buộc được liên kết với một tệp đã tải lên. PHP sẽ tạo 5 biến (5 index bên trong biến toàn cục $_FILES) nếu giá trị được phân bổ cho thuộc tính name thẻ input là file. Các biến này được đề cập như sau:

  • error: mã lỗi liên quan tới file upload
  • Multipurpose Internet Mail Extensions (MIME): loại tệp đã tải lên
  • name: Tên thật của file đã tải lên
  • size: kích thước của file đã tải lên
  • tmp_name: tệp đã tải lên nằm trong thư mục tạm thời trên máy chủ Web

Ví dụ:

Tiếp tục bổ sung logic upload cho file uploadfile.php

<?php
if (isset($_POST['submit'])) {
    if (isset($_FILES['file1'])) {
        //    var_dump($_FILES['file1']);
        $file = $_FILES['file1'];
        // lay ten file
        $fileName = $file['name'];
        // lay extesion cua file
        $fileType = $file['type'];
        // lay vi tri file luu tam thoi tren server .tmp
        $fileTempName = $file['tmp_name'];
        // lay ra thong tin xem file co loi hay khong
        $fileError = $file['error'];
        // lay ra kich thuoc file
        $fileSize = $file['size'];
        // phan tach ten file ra lay ra ten file va extension va chyen thanh mang
        $fileExt = explode('.', $fileName);
        // lay ra extesion
        $fileActualExt = strtolower(end($fileExt));
        // lay ra mang extension cho phep upload
        $allowed = array('jpg', 'jpeg', 'png', 'pdf');
        if(!file_exists('uploads')){
            mkdir('uploads',777);
        }
        if (in_array($fileActualExt, $allowed)) {
            if ($fileError === 0) {
                if ($fileSize < 1000000) {
                    $fileNameNew = uniqid('', true) . "." . $fileActualExt;
                    $fileDestination = 'uploads/' . $fileNameNew;
                    $result = move_uploaded_file($fileTempName, $fileDestination);
                    if ($result) {
                        header("Location: uploadfile.php?uploadsuccess=true");
                    } else {
                        echo "Upload failed";
                    }
                } else {
                    echo "Your file is too big!";
                }
            } else {
                echo "There was an error uploading your file!";
            }
        } else {
            echo "You cannot upload files of this type!";
        }
    }
}
if (isset($_GET['uploadsuccess'])) {
    echo "Your file has been uploaded successfully!";
}
?>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <form method="post" enctype="multipart/form-data">
        <input type="file" name="file1">
        <input type="submit" name="submit" value="Upload">
    </form>
</body>

</html>

Nếu tệp đã được tải lên, phần mở rộng tệp không hợp lệ hoặc kích thước tệp vượt quá giới hạn, v.v., thông báo lỗi thích hợp sẽ được hiển thị trên trình duyệt dựa trên lỗi cụ thể.

Hệ thống tệp PHP cho phép người dùng thực hiện các tác vụ xử lý tệp khác nhau. Chúng bao gồm tạo, viết, xóa, nối thêm và đóng tệp. Nó cũng cho phép họ đọc từng ký tự một tệp và từng dòng một.

Mở file/ đóng file

<?php 
// Open a text file for reading and writing
$file = fopen("example.txt", "a+");

// Write a message to the file
fwrite($file, "Hello world!");

// Read the contents of the file and output it to the browser
echo fread($file, filesize("example.txt"));

// Close the file handle when you are done with it
fclose($file);
?>

Đọc file

$file = "example.txt";

if (file_exists($file)) {
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename="' . basename($file) . '"');
  readfile($file);
} else {
  echo "File not found.";
}

Ghi file

Hàm fwrite() trong PHP giúp ghi một số nội dung của (các) chuỗi vào một file.

Cú pháp:

int fwrite (resource $handle, string $string [, int $length ])

Ví dụ:

$file = fopen("example.txt", "w");
$txt = "This text will be written to the file.";
fwrite($file, $txt);
fclose($file);

Xóa file

Người dùng có thể xóafile bằng hàm unlink()

Cú pháp:

bool unlink (string $filename [, resource $context ])
$file_to_delete = '/path/to/file';
if(unlink($file_to_delete)) {
    echo "File has been deleted successfully."; 
} else{
    echo "There was an error deleting the file.";
}

Thao tác với file

PHP có nhiều chức năng để đọc, chỉnh sửa, tạo và tải tệp lên. Tuy nhiên, điều quan trọng là phải thận trọng trong khi thao tác với tệp. Một động thái sai có thể gây bất lợi cho hệ thống máy tính.

Sau đây là các lỗi phổ biến xảy ra trong quá trình thao tác tệp:

  • Xóa nội dung của một tập tin
  • Ổ cứng bị đầy trong dữ liệu rác
  • Chỉnh sửa tệp sai

Ngoài ra, chúng ta còn một sô hàm như:

  • fgets(): đọc chuỗi trong file (ngắt chuỗi khi gặp ký tự new line)
  • feof(): kiểm tra xem file đã kết thúc chưa
  • fgetc(): đọc ký tự trong file

Bài tập

Tạo CSDL có tên dbtest, với bảng user với các cột username, firstname, birthday, password, email, phone, avatar. Thêm 1 bản ghi mẫu vào và tạo tệp profile.php để cho người dùng có thể cập nhật hồ sơ cá nhân với giao diện như hình:

Yêu cầu: avatar phải là file ảnh (jpg,png,gif), kích thước nhẹ hơn 1MB.

Bài viết liên quan:

Hướng dẫn sử dụng xdebug để gỡ lỗi PHP bằng visual studio code môi trường windows
Hướng dẫn cấu hình Extension live server tự động tải lại PHP khi cập nhật file trên visual studio code
Kỹ thuật AJAX trong PHP
Làm việc với JSON trong PHP
Chuyển hướng trình duyệt, download file bằng HTTP Header trong PHP
Một số cải tiến mới của PHP 8
Nhận dạng trình duyệt và nền tảng trong PHP
Từ khóa final, static, overloading và magic method trong PHP
Abstract Class (lớp trừu tượng) trong PHP
Interface trong hướng đối tượng PHP
Method (phương thức), public,private,protected, method overriding trong hướng đối tượng PHP
Iterable và iterator trong PHP

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

KHÁI NIỆM QUẢN LÝ DỰ ÁN CÔNG NGHỆ THÔNG TIN (IT PROJECT MANAGEMENT)

Cấu trúc lập trình và Mảng

Bắt đầu với C#

1. GIỚI THIỆU KHÁI NIỆM CHUẨN MỰC – ĐẠO ĐỨC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

2. ÁP DỤNG CÁC CHUẨN MỰC VÀ VẤN ĐỀ NGHỀ NGHIỆP TRONG CNTT

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×