Работа с файлами в PHP
Получаем данные о файле
PHP
file_exists("test.txt")//Существует ли файл?
filesize("test.txt");//Узнаем размер файла
//Возвращается временная метка:
fileatime("test.txt");//Дата последнего обращения к файлу
//date("d M Y", $atime);
filemtime("test.txt");//Дата изменения файла
//date("d M Y", $mtime);
filectime("test.txt");//Дата создания файла(Windows)
//date("d M Y", $ctime);
Файлы: режимы работы
PHP
resource fopen(string filename, string mode)
// resource - возвращает указатель на файл в случае успешной работы, или FALSE в случае ошибки
Режим работы | Описание |
---|---|
r
|
открыть файл только для чтения; |
r+
|
открыть файл для чтения и записи; |
w
|
открыть файл только для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало; |
w+
|
открыть файл для чтения и для записи. Если он существует, то текущее содержимое файла уничтожается. Текущая позиция устанавливается в начало; |
а
|
открыть файл для записи. Текущая позиция устанавливается в конец файла; |
а+
|
открыть файл для чтения и записи. Текущая позиция устанавливается в конец файла; |
b
|
обрабатывать бинарный файл. Этот флаг необходим при работе с бинарными файлами в ОС Windows. |
Открытие и закрытие файлов в PHP
PHP
$fi = fopen("test.html", "w+") or die("Ошибка");
//Примеры
$fi = fopen("http://www.you/test.html","r");
$fi = fopen("http://ftp.you/test.html", "r");
//Закрываем
fclose($fi)
Чтение файлов в PHP
PHP
//Читаем файл
fread(int fi, int length)
$str = fread($fi, 5); // Читаем первые 5 символов
echo $str;
// так как курсор передвинулся
$str = fread($fi, 12); // Читаем следующие 12 символов
echo $str;
fgets(int fi[, int length]) // Прочитать строку из файла
fgetss(int fi, int length [, string allowable]) // Прочитать строку из файла и отбросить HTML-теги
// string allowable - теги, которые необходимо оставить
fgetc(int fi) //Считывает символ из файла
Изначально Запись будет происходить в начало файла, путем перезаписывания существующих данных, если они есть. Поэтому, если вам нужно записать что-то в конец файла, нужно установить соответствующий режим чтения, например, a+
.
Манипуляции с курсором в файлах PHP
PHP
int fseek(int fi, int offset [, int whence]) //Установка курсора
// int fi - указатель на файл
//offset — количество символов, на которые нужно передвинуться.
//whence:
//SEEK_SET — движение начинается с начала файла;
//SEEK_CUR — движение идет от текущей позиции;
//SEEK_END — движение идет от конца файла.
fseek($fi, -10, SEEK_END); //Читаем последние 10 знаков
$s = fread($fi, 10);
$pos = ftell($fi); //Узнаем текущую позицию
rewind($f)//сброс курсора
bool feof($f) //конец файла
Прямая работа с файлами (данными) в PHP
PHP
array file(string filename) // Получаем содержимое файла в виде массива
//Еще один вариант прямой работы с данными
file_get_contents(string filename) //Чтение (получаем весь файл одной строкой)
//Запись в файл (изначально перезаписывается)
file_put_contents(string filename, mixed data[,int flag]); //FILE_APPEND
// Запись в конец файла:
file_put_contents("test.txt", "данные", FILE_APPEND);
//Если записать массив,
$array = array("I", "live");
file_put_contents("test.txt",$array);
//то получим "Ilive"
Управление файлами в php
PHP
copy(string source, string destination); // Копирование файла
rename(str oldname, str newname); // Переименование файла
unlink(string filename); // Удаление файла
Загрузка файлов на сервер PHP
//Настрoйки PHP.ini
file_uploads (on|off) // разрешаем.запрещаем загрузку файлов
upload_tmp_dir // временная папка для загружаемых файлов. по умолчания временная папка
upload_max_filesize (default = 2 Mb) // макс. размер загружаемого файла
post_max_size // общий размер посылаемый формы (должен быть больше upload_max_filesize)
//Простая загрузка
HTML
<form enctype="multipart/form-data" action="upload.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="51200">
<input type="file" name="userfile">
<input type="submit" value="Send">
</form>
Работаем с файлами на сервере
PHP
//Принимаем данные
$tmp = $_FILES['userfile']['tmp_name'];
$name = $_FILES['userfile']['name'];
//Перемещаем файл
move_uploaded_file($tmp, name);
move_uploaded_file($tmp, "upload/".name); // перенаправляем файл в папку upload
// относительно текущего файла
//Что в массиве $_FILES
$_FILES['userfile']['name'] // имя файла, например, test.html
$_FILES['userfile']['tmp_name'] // временное имя файла (путь)
$_FILES['userfile']['size'] // размер файла
$_FILES['userfile']['type'] // тип файла
$_FILES['userfile']['error'] // 0 - ошибок нет, число - есть
Комментарии к статье