Конструктор ::create
Создание файла.
^file::create[формат;имя;текст]
^file::create[формат;имя;текст;опции]
^file::create[строка;расширенные_опции]
^file::create[файл;расширенные_опции]
Создает объект класса file с указанными именем и содержимым.
При создании текстовых файлов производится нормализация символов переводов строк. [3.4.2]
Формат — формат представления создаваемого файла. До версии 3.4.2 поддерживался только текстовый (text) формат.
Опции — хеш, в котором можно указать $.from-charset[кодировка], или $.to-charset[кодировка], или $.content-type[…]. [3.4.1] [3.4.5]
Расширенные опции — хеш, в котором, помимо обычных опций, можно указать еще и $.name[имя файла], $.mode[формат] [3.4.2]
Если нужно строку сохранить на диск сервера, есть более простой подход:^string.save[…].
До версии 3.4.5 параметра с кодировкой, из которой нужно преобразовать данные (from-charset), не было, а параметр с кодировкой, в которую нужно преобразовать данные, назывался не to-charset, а просто charset.
Пример выгрузки данных в XML виде
#export.html
^connect[строка соединения]{
$products[^table::sql{
SELECT
product_id, name
FROM
products
}]
$file[^file::create[text;export.xml;^untaint[xml]{<?xml version="1.0" encoding="$request:charset"?>
<products>
^products.menu{<product id="$products.product_id" name="$products.name"/>}
</products>
}]]
$response:download[$file]
}
При открытии этого документа произойдет создание файла export.xml и браузер предложит посетителю сохранить этот файл. Получится примерно такой текстовый файл:
\<?xml version="1.0" encoding="WINDOWS-1251"?>
<products>
<product id="1" name="Бывает "В кавычках""/>
<product id="2" name="Johnson&Johnson"/>
</products>