create. Создание текстового файла   


^file::create[формат;имя;текст]
^file::create[формат;имя;текст;опции]
   [3.4.0]
^file::create[строка;расширенные опции]   [3.4.2]
^file::create[файл;расширенные опции]
   [3.4.2]
Создает объект класса
file, с указанными именем и содержимым.
При создании текстовых файлов производится нормализация символов переводов строк.
   [3.4.2]

Формат - формат представления создаваемого файла.
До версии
3.4.2 поддерживался только текстовый (text) формат.
Опции - хеш, в котором можно указать: $.charset[кодировка] или $.content-type[...]   [3.4.1]
Расширенные опции - хеш, в котором можно указать: $.name[имя файла], $.mode[формат], $.charset[кодировка] или $.content-type[...]

Примечание: если файл нужно сохранить на диск сервера, есть более простой подход:
^string.save[…].

Пример выгрузки данных в 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="Бывает &quot;В кавычках&quot;"/>

   
<product id="2" name="Johnson&amp;Johnson"/>
</products>


User comments:

crypto 14 апреля 2010 14:57

Хреново, что только текстовый формат файла можно создать. Мне вот прореплейсить байты у загруженного
файла надо, создать как новый объект и отдать в $response:download а тут никак

    Поддержать сайт на родительском проекте КГБ