create. Создание файла   [3.1.5]

^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) формат.
Опции - хеш, в котором можно указать $.from-charset[кодировка] или $.to-charset[кодировка] или $.content-type[...]   [3.4.1] [3.4.5]
Расширенные опции - хеш, в котором помимо обычных опций можно указать еще и $.name[имя файла], $.mode[формат]

Примечание: если нужно строку сохранить на диск сервера, есть более простой подход:
^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="Бывает &quot;В кавычках&quot;"/>

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


User comments:

crypto 14.04.2010 14:57

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


In order to add comments you must register.
Copyright © 1997–2017 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 20.04.2017