Tải bản đầy đủ (.ppt) (30 trang)

PHP Xử Lý Tệp Tin Tài Liệu IT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (214.42 KB, 30 trang )

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>

×