Xử lý Tệp Tin Trong PHP
Xử lý Tệp Tin Trong PHP
Slide 2/ 20
Mục tiêu
Mục tiêu
Mở tập tin
Đọc tập tin
Ghi tập tin
Đóng tập tin
Slide 3/ 20
Thao tác với tệp tin
Thao 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ư:
Đọ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.
Slide 4/ 20
Thao tác với tệp tin
Thao 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
–
Hàm fopen()
Bước 2: Thực hiện đọc/ghi nội dung
–
Hàm fgets(), fgetc(), fread(), fputs(), fwrite()
Bước 3: Đóng tệp tin
–
Hàm fclose()
Slide 5/ 20
Mở tệp tin
Mở tệp tin
Để mở một file trong PHP ta sử dụng hàm fopen() theo cú pháp:
fopen("filename", "mode");
Tham số Mô tả
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
Slide 6/ 20
Mở tệp tin
Mở tệp tin
Các chế độ mở file
Chế độ Mô tả
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
Slide 7/ 20
Mở tệp tin
Mở tệp tin
Ví dụ:
<?php
$file=fopen("welcome.txt","r") or
exit("Không thể mở được tập tin!");
$file=fopen("images/test.gif","r") or
exit("Không thể mở được tập tin!");
$file=fopen(" or
exit("Không thể mở được tập tin!");
?>
Slide 8/ 20
Đóng tệp tin
Đó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.
fclose("tên file")
Ví dụ
<?php
fclose($file);
?>
fopen("filename", "mode");
Slide 9/ 20
Thao tác với tệp tin
Thao 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
Ví dụ:
<?php
if(feof($file))
echo "end of file";
?>
Slide 10/ 20
Đọc từng ký tự
Đọc từng ký tự
Có thể sử dụng hàm fgetc() để đọc lần lượt từng ký tự trong file:
Ví dụ:
<?php
$file=fopen("welcome.txt","r") or
exit("Unable to open file!");
while (!feof($file)) {
echo fgetc($file);
}
fclose($file);
?>
Đọc và ghi ra từng ký tự của file cho tới khi kết thúc.
Slide 11/ 20
Đọc từng dòng
Đọ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.
while(!feof($file)){
echo fgets($file). "<br />";
}
fclose($file);
?>
Slide 12/ 20
Đọc toàn bộ nội dung
Đọ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:
file_get_contents(path,use_include_path,context,start,max_length)
Tham số Mô tả
path Tham số bắt buộc. Chỉ ra tên file, hoặc URL đến file cần mở.
use_include_path
Tùy chọn. Thiết lập tham số này là 1(true) nếu muốn tìm tập tin trong chuỗi
include_path. Chuỗi include_path có dạng như biến môi trường PATH của hệ
thống. Ví dụ: include_path=".;c:\php\includes"
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
Slide 13/ 20
Ghi nội dung vào file
Ghi nội dung vào file
Cách 1: sử dụng hàm file_put_contents()
file_put_contents($file,$data);
Tham số Mô tả
file
Tham số bắt buộc. Chỉ ra tên file. File này không bắt buộc đã được mở bằng
hàm fopen.
data Tham số bắt buộc. Chỉ ra dữ liệu cần ri file
<?php
$file = 'people.txt';
//Mở file people.txt và lấy nội dung hiện tại của nó
$current = file_get_contents($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);
?>
Slide 14/ 20
Ghi nội dung vào file
Ghi 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);
Tham số Mô tả
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ự
Slide 15/ 20
Ghi nội dung vào file
Ghi 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.
Slide 16/ 20
Ghi nội dung vào file
Ghi nội dung vào file
Ví dụ: hàm fwrite().
<?php
$filename = "welcome.txt";
$file = fopen($filename, "w");
$str= "Hello\n";
fwrite($file, $str);
$str= "world\n";
echo fwrite($file, $str);
fclose($file);
?>
Slide 17/ 20
Ghi nội dung vào file
Ghi nội dung vào file
Ví dụ Ghi thêm nội dung vào file đã có
Ví dụ Ghi thêm nội dung vào file đã có
<?php
$filename = "welcome.txt";
$file = fopen($filename, "a") or die("can't open file");
$str= "New data 1\n";
fwrite($file, $str);
$str= "New Data 2\n";
fwrite($file, $str);
fclose($file);
?>
Slide 18/ 20
Xóa file
Xó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
<?php
$file = 'vanban.txt';
if(file_exists($file)){
unlink($file);
}
?>
Slide 19/ 20
Copy file
Copy 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";
}
?>
Slide 20/ 20
Làm việc với thư mục
Làm việc với thư mục
Hàm tạo thư mục mới
mkdir( $pathname, $mode )
Tham số Mô tả
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");
?>
Slide 21/ 20
Làm việc với thư mục
Là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";
}
?>
Slide 22/ 20
Làm việc với thư mục
Làm việc với thư mục
Hàm xóa thư mục
Ví dụ
rmdir($dir)
<?php
if(is_dir("uploads/product"))
{
rmdir ("uploads/product") ;
}
?>
Slide 23/ 20
Làm việc với thư mục
Làm việc với thư mục
Một số hàm khá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
Slide 24/ 20
Upload File
Upload 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.
Slide 25/ 20
A. Tạo Form upload
A. 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>