Mở tập tinĐọc tập tinGhi tập tinĐóng tập tinThao tác đọcghi nội dung các tệp tin(file) có thể sử dụng cho một vài công việc như: Đọc và chỉnh sửa nội dung của các tệp tin cấu hình(config file) để chỉnh sửa các giá trị như chuỗi kết nối, tên cơ sở dữ liệu, tài khoản đăng nhập…Tải(upload) các tệp tin lên server.Ngoài ra việc thao tác với tệp tin còn cho phép ứng dụng có thể làm việc với các tệp tin XML thay cho cở sở dữ liệu.
Trang 1Xử lý Tệp Tin Trong PHP
Trang 3Thao tác với tệp tin
Thao tác đọc/ghi nội dung các tệp tin(file) có thể sử dụng cho một vài công việc như:
hình(config file) để chỉnh sửa các giá trị như
chuỗi kết nối, tên cơ sở dữ liệu, tài khoản đăng nhập…
Ngoài ra việc thao tác với tệp tin còn cho phép ứng dụng có thể làm việc với các tệp tin
XML thay cho cở sở dữ liệu
Trang 4Thao tác với tệp tin
Các bước tuần tự làm việc với tệp tin như sau:
Bước 1: Mở/tạo tệp tin cần làm việc
Bước 2: Thực hiện đọc/ghi nội dung
Bước 3: Đóng tệp tin
Trang 5Mở tệp tin
Để mở một file trong PHP ta sử dụng hàm fopen() theo cú pháp:
fopen("filename", "mode");
filename Chỉ ra tên file, hoặc URL đến file cần mở
mode Chỉ ra chế độ (kiểu truy xuất) mở file (r, r+, w, w+, r, r+, a, a+, x, x+)
Hàm fopen() trả về FALSE và lỗi nếu thất bại.Có thể thêm kí tự @
trước tên hàm nếu không muốn hiển thị lỗi
Trang 6Mở tệp tin
r Mở file để đọc(Read-Only), con trỏ đọc sẽ bắt đầu tại vị trí đầu tiên của file.
r+ Mở file để đọc/ghi(Read-Write), con trỏ đọc sẽ bắt đầu tại vị trí đầu tiên của file.
w Mở file để ghi(Write-Only) Mở và xóa nội dung đã có của file hoặc tạo file mới nếu file chưa
tồn tại w+ Mở file để đọc/ghi(Write-Read) Mở và xóa nội dung đã có của file hoặc tạo file mới nếu file
chưa tồn tại
a Mở file để ghi(chỉ ghi) Mở và ghi thêm nội dung vào cuối của file hoặc tạo file mới nếu file
chưa tồn tại a+ Mở file để đọc/ghi Mở và ghi thêm nội dung vào cuối của file Nếu file chưa tồn tại se tạo
mới
x Mở file để ghi Tạo một file mới Trả về FALSE và lỗi nếu file đã tồn tại
x+ Đọc/ghi Tạo một file mới Trả về FALSE và lỗi nếu file đã tồn tại
Trang 8Đóng tệp tin
Đóng file: sau khi thao tác xong với các tệp tin thì ta phải đóng tệp tin lại để giải phóng
luồng Để đóng 1 file đang mở ta sử dụng hàm fclose() theo cú pháp.
Trang 9Thao tác với tệp tin
Để đọc nội dung của file ta có thể đọc theo từng dòng hoặc đọc từng ký tự
Việc đọc file được thực thi thông qua sự hỗ trợ của hàm feof()
Hàm này có vai trò kiểm tra kết thúc file (trả về true nếu đã
đến cuối file)
Thường được dùng để đọc dữ liệu từ tập tin không rõ kích thước
Chú ý: không đọc được từ file mở theo chế độ: w, a, x
Trang 10 Đọc và ghi ra từng ký tự của file cho tới khi kết thúc
Trang 11Đọc từng dòng
Hàm fgets() được sử dụng để đọc từng dòng từ nội dung của file:
Ví dụ sau đọc từng dòng nội dung trong file welcome.txt:
<?php
$file = fopen("welcome.txt", "r") or
exit("Unable to open file!");
//đọc qua từng dòng cho tới khi kết thúc.
Trang 12Đọc toàn bộ nội dung
Có thể đọc toàn bộ nội dung của một file vào một biến chuỗi bằng hàm sau:
context Tùy chọn Chỉ ra ngữ cảnh của xử lý file Có thể để tham số này là NULL
nếu không cần sử dụng context tùy biến start Tùy chọn Chỉ ra vị trí trong tập tin là nơi bắt đầu đọc
max_length Tùy chọn Chỉ ra bao nhiêu byte được đọc
Trang 13Ghi nội dung vào file
//Nối thêm một person mới vào chuỗi chứa nội dung đọc được từ file
$current = "John Smith\n";
//Ghi nội dung đọc được quay lại file file_put_contents($file, $current);
Trang 14Ghi nội dung vào file
Cách 2 để ghi nội dung vào file đang mở ta sử dụng hàm fwrite()
fwrite(file,string,length);
file Chỉ ra file đang được mở để ghi
string Chỉ ra chuỗi dữ liệu sẽ được ghi vào file
length Chỉ ra số byte tối đa được ghi vào file
Hàm fwrite() trả về FALSE nếu thất bại, ngược lại trả về số byte đã
được ghi vào file
Có thể dùng hàm này để ghi dữ liệu nhị phân, hoặc dữ liệu kí tự
Trang 15Ghi nội dung vào file
Hàm fwrite() cho phép ta ghi bất cứ dạng dữ liệu nào vào file
Trong trường hợp sử dụng fwrite() với tham số "w" và file đã tồn tại thì nội dung của
file sẽ bị xoá trắng và ghi dữ liệu mới vào file
Trong trường hợp cần ghi thêm nội dung vào file ta có thể sử dụng hàm fwrite() với
tham số mở file cho phép nối thêm
Trang 16Ghi nội dung vào file
Trang 17Ghi nội dung vào file
Ví dụ Ghi thêm nội dung vào file đã có
Trang 18Xóa file
Sử dụng hàm unlink() để xóa một file trong PHP
Ví dụ sau minh họa xóa file vanban.txt nếu file này có tồn tại
unlink('đường dẫn tới file')
Hàm unlink() trả về FALSE nếu thất bại, ngược lại trả về TRUE
Trang 19Copy file
Sử dụng hàm copy() để sao chép một file trong PHP
Ví dụ sau minh họa xóa file vanban.txt nếu file này có tồn tại
copy(string $source, string $dest )
Trong đó thì $source là file cần copy (file nguồn), $dest là file sẽ lưu
sau khi copy (file đích),hàm copy sẽ trả về giá trị true nếu copy
thành công,và ngược lại trả về false
<?php
$file = 'vanban.txt';
$newfile = 'example.txt';
if (!copy($file, $newfile)) { echo "Có lỗi trong quá trình copy file $file \n";
Trang 20Làm việc với thư mục
Hàm tạo thư mục mới
mkdir( $pathname, $mode )
pathname Chỉ ra đường dẫn tới thư mục cần tạo
mode Gán quyền truy cập dữ liệu, mặc định là 0777 (toàn quyền: ghi, xóa,
sửa,…)
<?php
mkdir("uploads/product");
?>
Trang 21Làm việc với thư mục
Hàm kiểm tra xem có phải là một thư mục không
Ví dụ
is_dir($dir)
<?php
if(is_dir("uploads/product")){
echo "Tồn tại thư mục";
}
?>
Trang 22Làm việc với thư mục
rmdir ("uploads/product") ;}
?>
Trang 23Làm việc với thư mục
getcwd(): Lấy đường dẫn thư mục
dirname( $path_to_dir_or_file ):Lấy đườngdẫn thư mục cha của thư
mục hoặc tập tin đang làm việc
opendir( $path_to_dir ): Mở một thư mục để làm việc
scandir( $path_to_dir): Trả về mảng chứa danh sách file và thư
mục hiện có trong thư mục $path_to_dir
rename( $oldname, $newname ): Đổi tên file hoặc thư mục
glob(): Lấy các danh sách file và thư mục
Trang 24Upload File
Chức năng upload file cho phép ta có thể copy các file lên thư mục của server.
Để thực thi thao tác upload PHP hỗ trợ đối tượng nội tại $_FILE;
Ta có bảng các lựa chọn với $_FILE:
$_FILES["filefield_name"]["name"] - lấy hoặc thiết lập tên file upload
$_FILES["filefield_name"]["type"] - chỉ định kiểu file upload
$_FILES["filefield_name"]["size"] – dung lượng của file upload(tính bằng byte)
$_FILES["filefield_name"]["error"] - lỗi trả về trong quá trình upload file.
$_FILES["filefield_name"]["tmp_name"] : đối tượng lưu tạm thời trên server.
Trang 25A Tạo Form upload
Tạo một form để upload file và đặt thuộc tính cho form như sau:
Thuộc tính method giá trị là POST
Thuộc tính enctype giá trị là multipart/form-data (dùng chỉ ra
dữ liệu upload là nhị phân).
<form action="upload_file.php" method="post"
enctype="multipart/form-data">
Please choose a file:
<input type="file" name="imagefile" id="file" /> <br />
<input type="submit" name="submit" value="Submit" />
</form>
Trang 26Hiển thị các thông tin về tiến trình upload
echo "Upload: " $_FILES["imagefile"]["name"] "<br />";
echo "Type: " $_FILES["imagefile"]["type"] "<br />";
echo "Size: " ($_FILES["imagefile"]["size"] / 1024) "
Kb<br />";
echo "Stored in: " $_FILES["imagefile"]["tmp_name"];
}
?>
Trang 27B.Hiệu chỉnh các điều kiện khi upload file
Trang 28{
echo "Upload: " $_FILES["imagefile"]["name"] "<br />";
echo "Type: " $_FILES["imagefile"]["type"] "<br />";
echo "Size: " ($_FILES["imagefile"]["size"] / 1024) " Kb<br
Trang 29C Lưu file vào thư mục
Lúc này file đang được lưu trong đối tượng tạm thời, ta phải lưu ra file trên thư mục của server.
Trang 30PHP - Copy image to my server direct from URL