Làm việc với file và thư mụcUpload và download file Tạo ảnh mới, thay đổi kích cỡ ảnh, làm việc vớitransparency Mục tiêu... Liệt kê danh sách fileĐọc và ghi file Đọc và ghi dữ liệu CSV S
Trang 1Bài 6
Tải file và hình ảnh lên website
Trang 2Làm việc với file và thư mục
Upload và download file
Tạo ảnh mới, thay đổi kích cỡ ảnh, làm việc vớitransparency
Mục tiêu
Trang 3Liệt kê danh sách file
Đọc và ghi file
Đọc và ghi dữ liệu CSV
Sao chép, đổi tên, xóa một file
Làm việc với file và thư mục
Trang 4Ba hàm kiểm tra một file/folder đã tồn tại chưa:
Hàm lấy về folder hiện tại:
Hằng chứa ký tự phân cách đường dẫn:
Hàm liệt kê danh sách folder:
Làm việc với thư mục (folder)
is_file( $path ) is_dir( $path )
file_exists ( $path )
getcwd()
DIRECTORY_SEPARATOR
Trang 5Hiển thị danh sách folder:
Ví dụ
$path = getcwd();
$items = scandir( $path );
echo "<p>Content of path: </p>" ;
echo "<ul>" ;
foreach ( $items as $item ) {
echo '<li>' $item
'</li>' ;
}
echo '</ul>' ;
Trang 6Hiển thị các file từ danh sách folder:
Trang 8Đọc nội dung từ file txt:
Ghi nội dung vào file txt:
Đọc và ghi file txt
$text = file_get_contents('message.txt');
$text = htmlspeacialchars( $text );
echo '<div>' $text '</div>' ;
$text = "This is line 1 \nThis is line 2 \n";
file_put_contents('message.txt', $text );
Trang 9Đọc file và hiển thị dưới dạng danh sách:
Ghi mảng vào file:
Đọc và ghi các mảng
$name = file('usernames.txt');
foreach ( $names as $name ) {
echo '<div>' $name '</div>' ;
}
$name = array ( 'joelmurach' , 'rayharris' , 'mikemurach' );
$name = implode ( "\n" , $names );
file_put_contents('usernames.txt', $names );
Trang 10Các chế độ mở file của hàm fopen
rb
wb
ab
xb
Trang 12Đọc từ một file:
Ví dụ
$file = fopen ( 'usernames.txt' , 'rb' );
$name = '';
while (! feof ( $file )) {
$name = fgets( $file );
if ( $name == false ) { continue ; }
$name = trim( $name );
if ( strlen ( $name ) == 0 || subtr ( $name , 0 , 1 ) ==
Trang 13Ghi vào một file:
Ví dụ
$path = getcwd();
$items = scandir( $path );
$file = fopen ( 'listing.txt' , 'wb' );
foreach ( $items as $item ) {
$item_path = $path DIRECTORY_SEPARATOR $item ;
if ( is_dir ( $item_path )) {
fwrite ( $file , $item "\n" );
} }
fclose( $file );
Trang 14Hàm đọc/ghi file CSV:
fgetcsv($file)
fputcsv($file, $array)
Ví dụ một file CSV đơn giản:
Hàm thao tác với file CSV
Trang 15Ghi dữ liệu vào file CSV:
Đọc dữ liệu từ file CSV:
Ví dụ
$products = array ( array ( 'MMS-1234' , 'Trumpet' , 199.95 ),
array ( 'MMS-8521' , 'Flute' , 149.95 ));
$file = fopen ( 'products.csv' , 'wb' );
foreach ( $products as $product ) {
fputcsv ( $file , $product );
Trang 16Hàm copy file:
copy($oldname, $newname)Hàm đổi tên file:
rename($oldname, $newname)Hàm xóa một file:
unlink($name)
Hàm copy, đổi tên, xóa file
Trang 19Form HTML để upload file
Mã PHP làm việc với file upload
Upload file
Trang 20Để upload file thì form HTML cần có thành phầntối thiểu như sau:
Kết quả hiển thị:
Form HTML để upload file
<form action="upload.php" method="post"
enctype="multipart/form-data">
<input type="file" name="file1"/> <br/>
<input type="submit" value="Upload"/>
</form>
Trang 21UPLOAD_ERR_OK: không xảy ra lỗi
UPLOAD_ERR_INI_SIZE: kích thước file vượt quy định
Làm việc với file upload
Trang 22Hàm lưu file đã upload:
move_uploaded_file($tmp, $new)
Ví dụ:
Làm việc với file upload
$tmp_name = $_FILES ['file1']['tmp_name'];
$path = getcwd() DIRECTORY_SEPARATOR 'images' ;
$name = $path DIRECTORY_SEPARATOR
$_FILES [ 'file1' ][ 'name' ];
$success = move_uploaded_file( $tmp_name , $name );
if ( $success ) {
$upload_message = $name ' has been uploaded';
}
Trang 23Lấy thông tin về một ảnh
Đọc và ghi ảnh
Thay đổi kích cỡ ảnh
Làm việc với độ trong suốt của ảnh
Làm việc với file ảnh
Trang 24Hàm lấy thông tin về một file ảnh:
Trang 25Lấy thông tin về một file ảnh:
Ví dụ
//Thiết lập đường dẫn tới file ảnh
$image_path = getcwd() DIRECTORY_SEPARATOR
'gibson_sg.png' ;
//Lấy thông số chiều dài, chiều rộng và loại ảnh
$image_info = getimagesize( $image_path );
$image_width = $image_info [ 0 ];
$image_height = $image_info [ 1 ];
$image_type = $image_info [ 2 ];
Trang 28Đọc và ghi file ảnh:
Ví dụ
//Thiết lập đường dẫn cho ảnh
$image_path = getcwd() DIRECTORY_SEPARATOR
'gibson_sg.png' ;
$image_path_2 = getcwd() DIRECTORY_SEPARATOR
'gibson_sg_2.png' ;
//Lấy thông số chiều rộng, chiều dài và loại ảnh
$image_info = getimagesize( $image_path );
$image_type = $image_info [ 2 ];
Trang 30Ví dụ
//Tạo ảnh mới từ một file có sẵn
$image = $image_from_file ( $image_path );
//Kiểm tra chiều dài và chiều rộng bức ảnh
$image_width = imagesx ( $image );
$image_height = imagesy ( $image );
//Ghi ảnh vào một file
$image_to_file ( $image , $image_path_2 );
//Giải phóng bộ nhớ mà bức ảnh chiếm
imagedestroy ( $image );
Trang 31imagecreatetruecolor($w, $h)
imagecopyresampled($di, $si, $dx, $dy, $sx, $sy,
$dw, $dh, $sw, $sh)
Hàm thay đổi kích cỡ ảnh
Trang 32Thay đổi kích cỡ ảnh thành tối đa là 100x100
//Lấy ảnh cũ và các thông số dài rộng của nó
$old_image = imagecreatefrompng ( $old_path );
$old_width = imagesx ( $old_image );
$old_height = imagesy ( $old_image );
Trang 33Ví dụ
//Nếu ảnh lớn hơn tỷ lệ định sẵn thì tạo ảnh mới
if ( $width_ratio > 1 || $height_ratio > 1 ) {
//Tính chiều dài và chiều rộng cho ảnh mới
$ratio = max( $width_ratio , $height_ratio );
$new_height = round( $old_height / $ratio );
$new_width = round( $old_width / $ratio );
Trang 34Ví dụ
//Ghi ảnh mới vào file
imagepng ( $new_image , $new_path );
//Giải phóng bộ nhớ dùng cho ảnh mới
imagedestroy ( $new_image );
}
//Giải phóng bộ nhớ dùng cho ảnh cũ
imagedestroy ( $old_image );
Trang 36Ví dụ
//Tính chiều dài và chiều rộng của ảnh mới và thiết lập loại ảnh
$new_image = imagecreatetruecolor ( $new_width , $new_height );
//Thiết lập độ trong suốt tùy thuộc vào loại ảnh
imagealphablending ( $new_image , false );
imagesavealpha ( $new_image , true );
Trang 37Giao diện người dùng:
Kết quả
Trang 38PHP cung cấp nhiều hàm làm việc với file, bao
gồm cả các file định dạng CSV
Thư viện GD là một thư viện của PHP chuyên xử
lý ảnh, nó gồm các hàm xử lý ảnh có kiểu địnhdạng JPEG, GIF và PNG
Độ trong suốt là thông số thể hiện tỉ lệ trong
suốt của một bức ảnh Thông tin này được lưu
trong kênh alpha (alpha channel) của ảnh Khi
đó, trình duyệt có thể kết hợp các phần trong
Tổng kết bài học