Php копирование файла по http
Файл — это просто ресурс для хранения информации на компьютере.
Файлы обычно используются для хранения информации, такой как;
- Настройки конфигурации программы
- Простые данные, такие как имена контактов с номерами телефонов.
- Изображения, картинки, фотографии и т. Д.
В этом уроке вы узнаете
Поддержка форматов файлов PHP
PHP файловые функции поддерживают широкий спектр форматов файлов, которые включают в себя;
- File.txt
- file.log
- File.custom_extension, т.е. file.xyz
- FILE.CSV
- File.jpg, file.jpg и т. Д.
- Файлы обеспечивают постоянное экономически эффективное решение для хранения простых данных по сравнению с базами данных, которые требуют другого программного обеспечения и навыков для управления системами СУБД.
- Вы хотите хранить простые данные, такие как журналы сервера, для последующего поиска и анализа
- Вы хотите сохранить настройки программы, т.е. program.ini
PHP файлы Функции
PHP предоставляет удобный способ работы с файлами благодаря своей богатой коллекции встроенных функций.
Операционные системы, такие как Windows и MAC OS, не чувствительны к регистру, в то время как операционные системы Linux или Unix чувствительны к регистру.
Рекомендуется использовать преобразование имен, например строчные буквы, только для имен файлов, что обеспечивает максимальную кроссплатформенную совместимость.
Давайте теперь посмотрим на некоторые из наиболее часто используемых файловых функций PHP.
PHP File_exists Функция
Эта функция используется для определения того, существует файл или нет.
- Это удобно, когда мы хотим узнать, существует ли файл или нет, перед его обработкой.
- Вы также можете использовать эту функцию при создании нового файла, и вы хотите убедиться, что файл еще не существует на сервере.
Функция file_exist имеет следующий синтаксис.
- «File_exists ()» — это функция PHP, которая возвращает true, если файл существует, и false, если он не существует.
- «$ File_name» — это путь и имя проверяемого файла.
Приведенный ниже код использует функцию file_exists, чтобы определить, существует ли файл my_settings.txt.
PHP Fopen Функция
Функция fopen используется для открытия файлов. Имеет следующий синтаксис
Если с полным путём возникнут проблемы, то можно воспользоваться адресом корневой папки сайта, который находится в переменной $_SERVER['DOCUMENT_ROOT'].
Тогда путь к файлу можно прописать как:
$_SERVER['DOCUMENT_ROOT'] . '/mouse.txt'
Запись файла
С помощью функции file_put_contents можно записывать данные в файл. Приведём пример её использования: В результате выполнения этого примера, в файл 'mouse.txt', который находится в корневой папке сайта, будет записана строка 'Тише, мыши, кот на крыше'. Если файла не существует, то он будет создан. Если файл уже существовал, то его содержимое будет перезаписано.
- FILE_APPEND - заставляет функцию записывать передаваемые данные в конец файла. Используется часто для создания файлов с логами (историей каких-либо действий)
- LOCK_EX - блокирует файл во время записи так, что никто не может прочитать или изменить его
- FILE_USE_INCLUDE_PATH - ищет файл в подключаемых дерикториях. Этот флаг используется крайне редко
Проверка существования файла
Функция file_exists делает проверку существования файла. Принимает единственный параметр - полный путь к файлу. Часто используется внутри условия if( ), потому что выдает true, если файл существует, и false, если файл не существует. Потому что существуетУдаление файла
Для удаления файлов в PHP используется функция unlink. Ей, как и все предыдущим функциям, передаётся абсолютный путь к файлу в системе. Приведём пример удаления файла с её помощью, но перед удалением сделаем проверку существует ли вообще файл, который собираемся удалить: Из-за особенностей работы UNIX систем, при удалении файла функцией unlink файл будет существовать до тех пор, пока существует хотя бы одна символическая или жёсткая ссылка не него. Функция unlink возвращает true в случае успешного завершения удаления.Переименование и перемещение файла
Функция rename в PHP умеет переименовывать файл или директорию. На вход она принимает два параметра: путь к файлу, который надо переименовать, и путь к файлу, который получится в результате переименовывания. Необходимо задавать полный путь: В результате выполнения этой функции файл 'mouse.txt', который находится в корневой папке сайта, будет переименован в '/cat.txt'. Если файл '/cat.txt' уже существовал. то он обязательно будет перезаписан.
Как можно догадаться, эта функция умеет не только переименовывать файлы и папки, но и перемещать их в другие директори. Для этого в новом названии надо указать новый путь. К примеру: При выполнении такого кода файл 'mouse.txt' будет перемещён папку '/home/'. Функция rename возвращает true в случае успешного завершения переименования.
Копирование файла
Копирование файла в PHP выполняется с помощью функции copy. Которая похожа на функцию переименовывания. Она тоже принимает два параметра. Приведём пример использования: В результате выполнения этой функции файл 'mouse1.txt', который находится в корневой папке сайта, будет скопирован в '/mouse2.txt'. Если '/mouse2.txt' уже существовал, то он будет перезаписан. Функция copy возвращает true в случае успешного завершения копирования.Определение размера файла
Иногда появляется задача определения размера файла. Эта задача решается функцией filesize. У этой функции только один параметр - полный путь к файлу. И возвращает она размер файла, указанный в байтах. Попробуем применить функцию на практике:
С помощью функции file_get_contents() можно получить содержимое файла:
Также мы можем получить html-код какой-либо страницы в интернете:
Но работает это далеко не для всех сайтов, у многих есть защита от такого примитивного парсинга.
Чтение файла: file()
Функция file() позволяет получить содержимое файла в виде массива. Разделителем элементов является символ переноса строки.
Создадим в корне сайта файл data.txt со следующим содержимым:
Теперь запустим скрипт index.php со следующим кодом:
При запуске этого скрипта мы получим в браузере:
Заметили, что у первых двух строк длина 7 символов вместо пяти? Это из-за того, что каждая строка содержит в конце символы переноса строки.
Чаще всего они нам не нужны, поэтому их можно убрать, передав вторым параметром константу FILE_IGNORE_NEW_LINES :
Теперь у всех строк будет по 5 символов.
Если нам необходимо получить только заполненные строки в файле и пропустить пустые, можно передать вторым параметром константу FILE_SKIP_EMPTY_LINES :
Разумеется, мы можем передать сразу две константы:
Создание файла и запись в файл: file_put_contents()
Функция file_put_contents() позволяет создать файл и заполнить его данными.
Первым параметром функция принимает путь к файлу, вторым - строку с данными. Для создания пустого файла нужно передать вторым параметром пустую строку.
Если файла не существует - он будет создан. Если существует - данные в файле будут перезаписаны.
Чтобы не перезаписывать данные, а добавить их в конец файла, нужно передать третьим параметром константу FILE_APPEND :
Также вторым параметром можно передать массив:
Но этот вариант не очень удобен, поскольку все элементы массива запишутся подряд, без каких-либо разделителей. Чтобы их добавить, можно использовать функцию implode:
Создание папки или структуры папок
Создать папку можно с помощью функции mkdir() (make directory):
Вторым параметром указываются права доступа к файлу в виде восьмеричного числа, по-умолчанию это 0777 , что означает самые широкие права. Для Windows этот аргумент игнорируется.
Кроме этого, второй параметр может игнорироваться при заданной umask (пользовательская маска (user mask), которая нужна для определения конечных прав доступа). В этом случае принудительно сменить права можно функцией chmod() :
Также мы можем создать структуру папок рекурсивно, для этого нужно третьим параметром передать true :
Но в этом случае права доступа будут заданы только для конечной папки. Для изменения прав у каждой из папок придётся указывать права вручную:
Права доступа - это отдельная объёмная тема, поэтому сейчас мы её пока рассматривать не будем.
Проверка существования файла или папки
Проверить существование папки или файла можно с помощью функции file_exists() :
Если вы хотите проверить существование только папки или только файла, для этого есть специальные функции is_dir() и is_file() :
Проверка прав доступа
Функции is_readable() и is_writable() проверяют, есть ли у пользователя, от имени которого запущен PHP, права на чтение и запись файла или папки:
Копирование, перенос и удаление файла
Для удаления файлов используется функция unlink() :
Чтобы скопировать файл, используем функцию copy() :
Для переименования и переноса файла в другую папку используется функция rename() :
Работа с файлами с помощью fopen()
Функций file() , file_get_contents() и file_put_contents() достаточно для решения большинства задач, связанных с управлением файлами.
Но иногда возникают ситуации, когда нам необходимы более продвинутые инструменты. Например, если у нас есть большой текстовый файл и мы хотим читать его построчно, а не весь сразу, для экономии оперативной памяти.
Итак, открыть (или создать и открыть) файл можно с помощью функции fopen() :
Функция fopen() возвращает так называемый лескриптор. Это ссылка, указатель на файл, его мы будем передавать в другие функции. Кстати, тип данных этого дескриптора - resource .
Первым параметром мы передаём путь к файлу, вторым - модификатор доступа к файлу. Ниже перечислены наиболее популярные модификаторы:
- r - открытие для чтения, указатель переходит в начало файла.
- r+ - открытие для чтения и записи, указатель переходит в начало файла.
- w - открытие для записи, указатель переходит в начало файла. Если файла нет - создаётся, если есть - очищается от данных.
- w+ - открытие для чтения и записи, в остальном аналогичен w .
- a - открытие для записи, указатель переходит в конец файла. Если файла нет - создаётся.
- a+ - открытие для чтения и записи, в остальном аналогичен a .
- x - создание и открытие для записи, указатель переходит в начало файла. Если файл существует - PHP покажет ошибку.
- x+ - создание и открытие для чтения и записи, в остальном аналогичен x .
Указатель - это нечто вроде курсора. Вы можете переместить его в любое место файла, чтобы добавить или отредактировать определённые данные.
Для записи данных в файл существует функция fwrite() . Давайте попробуем создать файл и записать в него какие-нибудь данные:
Заметьте, из-за модификатора w при каждом запуске скрипта данные в файле стираются и добавляются заново. Если модификатор заменить на a , данные будут не перезаписываться, а добавляться в конец файла.
Для построчного чтения файла используется функция fgets() :
При каждом запуске fgets получает следующую строку и возвращает её в $line . Вторым параметром передаётся максимальная длина строки. Это означает, что если строка слишком длинная, она будет обрезана.
Также в PHP существует множество других полезных функций, работающих с дескриптором файла. Почитать о них можно в документации.
Продолжаем урок, который посвящен теме «Работа с файлами PHP». Если вы не читали предыдущий урок 16, рекомендую почитать, а те, кто читал, двигаемся дальше. В этом уроке вы научитесь удалять созданный или существующий файл с помощью PHP, копировать или переименовывать, блокировать файл.
Ну что, если вы готовы, тогда в бой…
Удаление файла на PHP
Если вам нужно удалить какой-либо файл, воспользуйтесь PHP-функцией unlink() :
- имя_файла – здесь укажите имя файла, который нужно удалить.
Припустим, нам нужно удалить файл « file.txt », пример для заполнения будет вот такой:
Если файл « file.txt » присутствовал, скрипт его удален.
Копирование файла на PHP
Если вам нужно из одного файла перекопировать содержимое в другой файл, воспользуйтесь PHP-функцией copy() .
- файл1 – имя файла откуда будет копироваться текст
- файл2 – имя файла куда будет копироваться текст
Для примера создайте на локальном сервере в папке « test-1 » файл под названием « file2.txt ». Пусть файл будет пустым. Теперь вставим этот код copy("file.txt", "file2.txt"); в php код « file.php »:
Переименование файла на PHP
Чтобы сделать переименование файла, воспользуйтесь PHP-функцией rename() :
- файл1 – название файла, которое нужно заменить (переименовать)
- файл2 – здесь нужно дать новое название файла
Пример для заполнения вот такой:
Вот готовый код:
Файл « file2.txt » переименован в файл « bloggood-ru.txt ».
На этом, я думаю, следует закончить наш урок. Но это еще не все, в следующем уроке продолжим работу с файлами.
Читайте также: