Trong bài học này, chúng ta sẽ tìm hiểu về biến siêu toàn cục $_FILES cũng như cách upload filfe trong PHP.
- Video Upload file trong PHP
- Hướng dẫn chi tiết
- Biến siêu toàn cục $_FILES
- Xử lý upload file trong php
Video Upload file trong PHP
Hướng dẫn chi tiết
Có làm thì mới có ăn như ai đó từng nói - Vài dòng ngắn cho QUẢNG CÁO nhé Các bạn cần hosting WordPress nhanh, rẻ và dễ sử dụng có free SLL hãy chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn đăng ký và sử dụng hosting từ link trên, Góc Làm Web sẽ có một ít tiền để duy trì.
Biến siêu toàn cục $_FILES
$_FILES là một mảng kết hợp của các mục được tải lên thông qua phương thức POST. Trong đó, các file được tải lên sẽ là 1 phần tử trong mảng gồm key là name bạn đặt trong file html và value là một mảng gồm 4 phần tử
- name: tên file
- tmp_name: nơi lưu tạm file, nằm bất cứ đâu trong server và tùy thuộc là thiết lập của bạn.
- error: lỗi xảy ra
- size: kích thước file, đơn vị là byte.
Xử lý upload file trong php
Form html của chúng ta như sau:
"Người ta tắt AdsBlock không phải vì người ta dại, mà người ta quý mình nên coi quảng cáo" Hosting WordPress nhanh, rẻ và dễ sử dụng có free SLL hãy chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn mua hosting từ link trên, mình sẽ có một ít tiền để duy trì. Cảm ơn
$ten_file: tên ‘tmp_name’ của file được tải tạm lên server.
$dia_chi_luu_file: nơi lưu trữ file upload mà bạn muốn.
move_uploaded_file[$_FILES["fileToUpload"]["tmp_name"], 'uploads/'.basename[$_FILES["fileToUpload"]["name"]]];
Tất nhiên, chỉ đơn giản như thế thì chúng ta đã có thể upload file. Tuy nhiên, chúng ta hay thử áp dụng $_FILES để xử lý phức tạp hơn một chút quá trình tải file lên.
- Kiểm tra file trùng
- Kiểm tra loại file
- Kiểm tra kích thước file
Nếu thỏa hết tất cả điều kiện sẽ tiến hành upload file. Đầu tiên, chúng ta sẽ xác định nơi lưu file và file chúng ta sẽ xử lý nhé.
$target_dir = "uploads/"; $target_file = $target_dir . basename[$_FILES["fileToUpload"]["name"]];
Kiểm tra file đã tồn tại chưa
Nếu đã tồn tại sẽ bỏ qua. Thật ra, chúng ta có thể xử lý bằng cách đổi tên file nhưng thì làm đơn giản thôi nhé, trường hợp để tên file cách bạn có thể tìm hiểu thêm.
if [file_exists[$target_file]] { echo "Sorry, file already exists."; }
Kiểm tra loại file
Chúng ta sẽ kiểm tra loại file bằng cách kiểm tra đuôi file có nằm trong danh sách cho phép tải lên hay không. Trong ví dụ, chúng ta chỉ cho các file png, jpg, jpeg, gif tải lên.
$fileType = strtolower[pathinfo[$target_file,PATHINFO_EXTENSION]]; // Allow certain file formats if[$fileType != "jpg" && $fileType != "png" && $fileType != "jpeg" && $fileType != "gif" ] { echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed."; $upload_ok = 0; }
Kiểm tra kích thước file
Chúng ta sẽ xem kích thước file bằng cách truy cập vào key ‘size’
if [$_FILES["fileToUpload"]["size"] > 500000] { echo "Sorry, your file is too large."; }
Và nếu như thỏa hết, chúng ta chỉ cần dùng hàm move_uploaded_file để lưu trữ.
move_uploaded_file[$_FILES["fileToUpload"]["tmp_name"], $target_file];
Tài liệu bài học: Download
Nếu có thắc mắc, hãy đặt câu hỏi bằng cách comment bên dưới, qua email, hoặc nhắn tin qua Fanpage Góc làm web.
Liên hệ
Trong bài học này, mình sẽ hướng dẫn các bạn một số những thao tác cơ bản về thao tác với FILE trong PHP như mở file, lấy dữ liệu, ghi mới, xóa, sửa.
- Video Thao tác với FILE trong PHP
- Hướng dẫn chi tiết
- Mở file
- Ghi file
- Đóng file
- file_get_contents
- file_put_contents
Video Thao tác với FILE trong PHP
Hướng dẫn chi tiết
"Người ta tắt AdsBlock không phải vì người ta dại, mà người ta quý mình nên coi quảng cáo" Hosting WordPress nhanh, rẻ và dễ sử dụng có free SLL hãy chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn mua hosting từ link trên, mình sẽ có một ít tiền để duy trì. Cảm ơn
Mở file
Để mở một file chúng tôi sẽ dùng hàm fopen[$path, $mode].
Trong đó
- path: đường dẫn file
- mode: chế độ mở file [mở để ghi, xem, sửa, tạo file mới …].
$myfile = fopen['1.txt','r'];
Chúng ta có một số mode như bảng sau:
Có làm thì mới có ăn như ai đó từng nói - Vài dòng ngắn cho QUẢNG CÁO nhé Các bạn cần hosting WordPress nhanh, rẻ và dễ sử dụng có free SLL hãy chọn Azdigi nhé. Link đăng ký: NHẬN NGAY ƯU ĐÃI Nếu các bạn đăng ký và sử dụng hosting từ link trên, Góc Làm Web sẽ có một ít tiền để duy trì.
File có nghĩa là tập tin nhưng mình gọi là file cho ngắn gọn câu chữ nhé.
r | Mở file chỉ để đọc. Con trỏ bắt đầu từ đầu file. |
w | Mở ra chỉ để ghi. Xóa toàn bộ nội dung trong file hoặc tạo file mới nếu file chưa tồn tại. Con trỏ bắt đầu từ đầu file. |
a | Mở ra chỉ để ghi. Giữ lại nội dung file nếu có. Con trỏ bắt đầu ở cuối file. Tạo mới file nếu file chưa tồn tại. |
x | Tạo mới file để ghi. Trả về FALSE hoặc lỗi nếu file đã tồn tại. |
r+ | Mở file để đọc/ghi. Con trỏ nằm ở cuối file |
w+ | Mở file để đọc/ghi. Xóa toàn bộ nội dung trong file hoặc tạo file mới nếu file chưa tồn tại. Con trỏ bắt đầu từ đầu file. |
a+ | Mở file để đọc/ghi. Giữ lại nội dung file nếu có. Con trỏ bắt đầu ở cuối file. Tạo mới file nếu file chưa tồn tại. |
x+ | Tạo ra file mới để đọc/ghi. Trả về FALSE hoặc lỗi nếu file đã tồn tại. |
Đọc nội dung file
Để đọc nội dung file đã mở, chúng ta dùng hàm fread[ $filename, $filesize];
- file – file cần đọc.
- filesize – Số byte tối đa cần đọc.
$myfile = fopen['1.txt','r']; $content = fread[$myfile, filesize['1.txt']]; var_dump[$content];
Chúng ta dùng hàm fopen để lấy giá trị cho file. Đối với tham số filesize, chúng ta dùng hàm filesize[‘đường dẫn file’];
Ghi file
Để ghi dữ liệu vào file, chúng ta sẽ dùng hàm fwrite[ $file, $content ].
$myfile = fopen['2.txt','a+']; $content = 'Đây là nội dung file 2 + 1'; fwrite[$myfile, $content]; fclose[$myfile];
Đóng file
Sau khi mở, ghi, đọc, các bạn cần phải đóng file bằng hàm fclose[$file];
file_get_contents
Cách sử dụng: file_get_contents[ $filename, $use_include_path , $context , $offset , $maxlen];
- $filename là đường dẫn tới file cần đọc.
- $use_include_path là tham số, quy định có sử dụng hằng số FILE_USE_INCLUDE_PATH làm môi trường tìm kiếm file hay không.
- Từ PHP 5.0.0 đến nay, $use_include_path sẽ mang hai giá trị FILE_USE_INCLUDE_PATH hoặc NULL.
- $context là kết quả trả về của hàm stream_context_create[], nếu bạn không cần sử dụng ngữ cảnh tùy chỉnh có thể bỏ qua tham số này.
- $offset là vị trí bắt đầu đọc, nếu mang giá trị âm, việc đọc sẽ bắt đầu từ cuối file. nếu không được truyền vào, việc đọc sẽ bắt đầu từ đầu file.
- $maxlen là chiều dài tối đa mà hàm sẽ đọc. Nếu không truyền hàm sẽ đọc đến cuối file.
Hàm file_get_contents dùng để đọc nhanh dữ liệu trong file thay vì phải open, read, close.
$content = file_get_contents['3.txt']; echo $content;
file_put_contents
Cú pháp: file_put_contents[ $filename, $data, $flag];
Trong đó:
$filename là đường dẫn tới file.
$data là nội dung của file.
$flag là tham số, mang một trong các giá trị sau:
- FILE_USE_INCLUDE_PATH : hàm sẽ tìm kiếm $filename trong include directory.
- FILE_APPEND : nếu file đã tồn tại, hám sẽ không ghi đè $data vào nội dung sẵn có mà sẽ nối $data vào cuối file.
Tài liệu bài học: Download
Tham khảo thêm:
//www.w3schools.com/php/php_file_open.asp
//www.w3schools.com/php/php_file_create.asp
Nếu có thắc mắc, hãy đặt câu hỏi bằng cách comment bên dưới, qua email, hoặc nhắn tin qua Fanpage Góc làm web.
Liên hệ