file Alt ←

Конструктор ::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>