Xử lý tập tin & thư mục

Một phần của tài liệu Bài giảng phân tích ứng dụng web (Trang 73 - 81)

CHƯƠNG 6: PHP NÂNG CAO

6.5Xử lý tập tin & thư mục

Thêm một file vào hệ thống đang chạy:

require_once “controllers/controllersanpham.php”; include “view/template/header.php”;

Qua trình xử lý FILE trong PHP được bắt đầu bằng viêc mở một file. <html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html>

Một file trong PHP có thể được mở bằng những mode sau đây :

Modes Diễn giải

r Chỉ đọc. Bắt đầu từ đầu file. r+ Đọc/Viết. Bắt đầu từ đầu file.

w Chỉ viết. Mở và xóa toàn bộ nội dung file; sẽ tạo file mới nếu file chưa tồn tại

w+ Đọc và viết. Mở và xóa toàn bộ nội dung file; sẽ tạo mới nếu chưa có. a Thêm vào file. Mở và viết thêm vào cuối file, sẽ tạo mới nếu chưa có a+ Đoc và thêm. Viết tiếp vào cuối file.

x Chỉ viêt. Tạo file mới, sẽ không tạo nếu file đã tồn tại. x+ Đọc và viết. Tạo mới file, sẽ không tạo nếu file đã tồn tại.

Ví dụ: Sẽ đưa ra thông báo nêu không thể mở file html>

<body> <?php

$file=fopen("welcome.txt","r") or exit("Unable to open file!"); ?> </body> </html> Đóng file <?php $file = fopen("test.txt","r");

//some code to be executed

fclose($file); ?>

Kiểm tra xem đã ở cuối file chưa if (feof($file)) echo "End of file";

<?php

$file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Output a line of the file until the end is reached while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>

Đọc file, fgetc() sử dụng đề lấy từng kí tự <?php

$file=fopen("welcome.txt","r") or exit("Unable to open file!");

while (!feof($file)) { echo fgetc($file); } fclose($file); ?>

Một số hàm thông dụng xử lý File và thư mục trong PHP

Tên hàm Diễn giải

basename() Trả về tên file với địa chỉ tương ứng

chgrp() Đổi file group

chmod() Đổi quyền hạn file

chown() Đổi chủ file

copy() Copy file

delete() Xóa file

dirname() Trả lại đường dẫn cửa File

fclose() Đóng file

feof() Kiểm tra xem cuối file chưa

fgetc() Trả về ký tự nằm trong file

fgets() Đọc cả dòng file

fgetss() Đọc nội dùng dòng của file, bỏ các tag html và mà php

file() Đọc 1 file ra mảng

file_exists() Kiểm tra xem một file có tồn tại không. file_get_contents() Đọc file ra string

file_put_contents Ghi 1 string vào file

filesize() Trả lại dung lượng file

filetype() Trả lại dạng file

fopen() Mở một file

fputcsv() Format dòng csv và ghi vào file

fputs() Giồng fwrite

fread() Đọc từ file

fscanf() Đọc file theo format nhập vào

ftruncate() Cắt file theo độ dài

fwrite() Ghi vào file

is_dir() Kiểm tra xem tài nguyên có phải thư mục không

is_file() Kiểm tra xem tài nguyên có phải file khong

is_readable() Kiểm tra xem file có đọc được không

is_uploaded_file() Kiểm tra xem có phải file được upload không is_writable() Kiểm tra xem file có ghi vào được không

mkdir() Tạo thu mục mới

move_uploaded_file() Chuyển file từ thư mục upload

readfile() Đọc file và ghi vào bộ đệm

rename() Đổi tên file hay thư mục

rmdir() Xóa một thư mục rỗng

umask() Thay đổi quyền cho file

6.6 Hình ảnh

Một tệp ảnh là một tập hợp của nhiều pixel hay dots bởi một màu sắc nhất định nào đó. Mọi hình ảnh đều có dạng hình chữ nhật (rectangular) và có cạnh dài và ngắn nhất định, đuợc tạo bởi một matrix của pixels. 100 hình mỗi hình có 300 pix sẽ có tổng số pix là 30000 pixels. Trong php, hình ảnh là một hệ thống liên hợp (coordinate). Ví dụ: x bằng 300 và y bằng 100.

Ở góc độ trên bên trái của hình nó sẽ luôn là (0,0). Giá trị của x tăng dần theo khi kéo chéo một đường từ góc trái xuống góc phải đối diện (x,y), cũng như giá trị y tăng dần khi kéo một đường thẳng từ trên xuống dưới(0,y).Khi cho nội dung bất kỳ vào khung ảnh nó luôn liên quan tới góc độ trái phía bên trên. Nhìn ví dụ trên, góc liên hợp (180, 50) được đóng lại phía tay phải của tệp hình, khoảng giữa đổ xuống.

Image-formate

Cấu trúc, được html hiện thị lên web-site để biểu diễn hình ảnh luôn là một liên đới tĩnh. Dạng hình đã thay đổi chút ít trong những năm qua. 3 dạng hình quan trọng

thường đựơc dùng là gif, jpeg, png.

GIF được viết tắc từ Graphics Interchange Format. Vài năm trước đây gif rất được sử dụng phổ biến, bởi tính năng vô sắc ( transparency ) của nó. Dạng màu của Gif được kết hợp bởi 8-bit, do đó bạn chỉ có thể có 256 màu trong một tệp ảnh duy nhất. Do ảnh hưởng của sức chứa màu, ảnh Gif chủ thích hợp với những khung có diện tích lớn.

JPEG, Joint Photographic Experts Group, một dạng hình thích hợp cho ảnh chụp.Dạng jpeg không có vô sắc màu, nên nó không thích hợp với các toolbars hay

Form không có góc cạnh.

PNG, Portable Network Graphics, một dạng dình mới được hổ trợ bởi nhiều trình duyệt. PNG có nhiều điểm lợi gần như của gif cộng cả tính vô sắc màu. Điểm cần chú ý PNG không biểu hiện rỏ ràng trên trình duyệt của netscape 4, nhưng mọi trình duy hiện tại đều diễn đạt tốt. Bạn nên thử loại hình này trong mọi trình duyệt xem nó có

thích ứng không.

Thủ thuật biến đổi ảnh bằng PHP

GD là một ANSI-C thư viện cho việc tạo lập hình ảnh động. Tương tự như php, thư viện gd là một mã nguồn mở của boutell.com. GD-API bao gồm nhiều hàm giúp tạo, sửa các tệp tin hình ảnh qua lập trình php.

Các hàm căn bản

Chúng ta bắt đầu với cốt lõi của function và dùng nó để tạo hình trong bất kỳ server- graphic nào. Function này sẽ nạp (load) hình từ máy, lưu giử vào bộ phận nhớ ( memory) sau đó ghi hình vào đĩa cứng (disk) hay chuyển (streaming) đến trình duyệt.

Tạo ảnh

Bạn có thể dùng function imagecreate () để tạo một nguồn ảnh mới để chỉnh đổi. Cách gọi :

Ressource imagecreate (int x_size, int y_size)

Function imagecreate() trả lại cho chúng ta nguồn (resource) tương đương với

ảnh ở độ phân giải x_size và y_size.

Sử dụng ảnh đã (Using Existing Images)

Để tạo một ảnh trống (blank image) , chúng ta có thể lấy ảnh từ disk qua các funtions sau:

resource imagecreatefromjpeg (string filename) // ảnh dạng jpeg Ressource imagecreatefrompng (string filename) // ảnh dạng png

Truy tìm kích thước của tệp ảnh ( Finding an Image's Size)

Rất nhiều điểm lợi khi ứng dụng web cho ta biết kích thước của ảnh.

Array getimagesize ( string filename [, array imageìno])

funtion getimagesize() trả về cho ta 4 phần tử (elements) array là: element 0: độ ngang của ảnh trỏ về tham số pixels của tệp ảnh element 1: độ cao của ảnh trỏ về tham số pixels của tệp ảnh element 2: trị số (interger) tương đương cho loại ảnh (typ image) (1=gif, 2=JPG, 3=PNG)

element 4: chuỗi gắn thêm (add) vào tag để biểu hiện độ cao rộng, vd: „height=100 width=200“

Tham số (parameter) của tệp ảnh dự bị được chuyển đưa đến dãy array nhằm lấy thêm những thông tin của ảnh.

Chúng ta còn có thể sử dụng funtion imagesx() và imagey() để truy tìm độ cao rộng của tệp ảnh.

Int imagex ( resource image)

Copy và Bóp ảnh ( copy & resizing an a image)

Ta có thể dùng copy và resize để tạo ảnh mới. Function này rất lợi cho việc làm thư viện hình ảnh như thubmnails...

int imagecopyresized (resource dst_im, resource src_im,

int dstX, int dstY,int srcX, int srcY,

int dstW, int dstH, int srcW, int srcH)

Function này copy phần góc (rectangular) của nguồn ảnh và trao trả chúng đến đích

của ảnh thật.

dst_im, src_im – the destination and source image resources int dstX, int dstY – the upper-left corner of the replaced content in the destination image

int srcX, int srcY – the upper-left corner of the source content in the source image int dstW, int dstH – the width and height of the rectangular area to replace in the

destination image

int srcW, int srcH – the width and height of the rectangular area to copy in the source image

Nếu trong phạm vi góc thì không tương ứng với độ cao rộng trong khoảng giữa nguồn ảnh và đích ảnh. Function này họat động tương đối nó có thể copy từng vùng (regions) với cùng lọai ảnh (same image) (vd: dst_im tuơng ứng với src_im ). Tuy nhiên nếu vùng ảnh(régions) nằm trên vùng đã có kết quả (results) thì ta không thể liệu trước được.

Cho ảnh hiển thị trên trình duyệt

Khi đã chỉnh sửa ảnh xong, chúng ta cần tìm giải pháp cho ảnh hiện trên trình duyệt. Để làm việc này chúng ta dùng function imagepng() and imagejpeg()

int imagepng (resource image [, string filename])

int imagejpeg (resource image [, string filename])

function này xuất dữ liệu nguyên thủy (raw) của ảnh đến trình duyệt. Nếu nguồn ảnh là một tên tệp (file name), nó sẽ được ghi chép mọi thông tin vào tệp ảnh. Tên tệp phải nằm trong đĩa cứng (disk) và php phải có toàn quyền (chmod 777) để sao chép tin tệp. Ta cần dùng funtion header() trong trình duyệt khi muốn đưa ảnh hiện thị.

Xóa bỏ bộ nhớ ( Reclaiming used Memory)

Sau giao chuyển hình đến trình duyệt chúng ta cần loại bỏ đi phần tồn trong bộ phận nhớ qua function : imagedestory().

Để dùng function này chúng ta cần tạo một thubmnail để nạp (load) hình và kéo nhỏ xuống 1/8 so với ảnh nguyên thủy, kế đến lưu vào đĩa.

PHP Code:

//load the image into memory and get its properties $img = imagecreatefrompng("goldengate.png"); $imgsz = getimagesize("goldengate.png");

//create new image for thumbnail 1/8 the size of the original $thumb = imagecreate($imgsz[0]/8, $imgsz[1]/8);

//shrink the original image to 1/8th its size imagecopyresized($thumb, $img, 0, 0, 0, 0,

$imgsz[0]/8, $imgsz[1]/8, $imgsz[0], $imgsz[1]);

//write the thumbnail to disk

imagepng($thumb, "goldengate_thumb.png");

//get the image size of the thumbnail for use in the HTML below $thumbsz = getimagesize("goldengate_thumb.png");

//free resources occupied by the images imagedestroy($img); imagedestroy($thumb); echo $imgsz[3] echo $thumbsz[3] ?>

Một phần của tài liệu Bài giảng phân tích ứng dụng web (Trang 73 - 81)