Файловые операции на сервере
Методы для работы с файловой системой на сервере
- string FileOperation ( string xml ). Выполняет перечисленные в параметре операции и возвращает в аналогичной структуре результаты выполнения. В простейшем случае параметр указывает единственную операцию. В общем виде последовательно выполняться может неограниченное число перечисленных операций.
Структура параметра-запроса:
<?xml version="1.0" encoding="utf-16"?> <oktellcommapper version="80710"> <property_set name="..." id="..."> ... </property_set> ........................................... ........................................... ........................................... <property_set name="..." id="..."> ... </property_set> </oktellcommapper>
Каждая вложенный блок property_set указывает на отдельную операцию. В простейшем случае соответственно этот блок присутствует в единственном экземпляре и весь параметр принимает вид:
<?xml version="1.0" encoding="utf-16"?> <oktellcommapper version="80710"> <property_set name="..." id="..."> ... </property_set> </oktellcommapper>
Код идентификатора операции может не указываться. Он используется лишь для сопоставления операции в запросе и ответе во внешнем ПО.
Возвращаемое значение имеет вид, аналогичный параметру запроса. Каждая операция имеет свое представление в виде блока property_set, расположенного в том же месте, где и в запросе.
Структура ответа:
<?xml version="1.0" encoding="utf-16"?> <oktellxmlmapper version="80710"> <property_set name="..." id="..."> <property_simple key="resultcode" value="..." name="..." /> <property_cdata key="resultdescription"><![CDATA[...]]></property_cdata> ... </property_set> ........................................... ........................................... ........................................... <property_set name="..." id="..."> <property_simple key="resultcode" value="..." name="..." /> <property_cdata key="resultdescription"><![CDATA[...]]></property_cdata> ... </property_set> </oktellxmlmapper>
Существует несколько возможных операций. Каждая из них будет описана отдельно в этом разделе. В примерах запросов и ответов будет указана лишь составляющая часть XML-структуры, представляющая одну операцию.
Поддерживаемые файловые операции
- uploadfiletoserver. Осуществляет запрос к серверу на закачку одного файла с клиента на сервер. Размещение осуществляется в указанном месте на сервере. Файл должен существовать в указанном месте клиентского компьютера.
Свойство localpath определяет абсолютный путь к файлу на клиентском компьютере. Свойство serverpath определяет путь на сервере, куда требуется загрузить файл. Может быть задан абсолютный путь или относительный (от каталога серверной службы) - в этом случае поле isrelative должно быть указано и иметь значение "1". Может быть указан полный путь к файлу (тогда исходное имя файла при сохранении теряется в пользу указанного), либо может быть указан путь к каталогу (тогда файл сохранится с исходным именем) - в этом случае поле isfolder должно быть указано и иметь значение "1".
Структура запроса:
<property_set name="uploadfiletoserver" id="..."> <property_cdata key="localpath"><![CDATA[...]]></property_cdata> <property_cdata key="serverpath"><![CDATA[...]]></property_cdata> <property_simple key="isrelative" value="0" /> <property_simple key="isfolder" value="0" /> </property_set>
Ответ содержит стандартные поля resultcode и resultdescription, а также поле serverfilepath - возвращает полный путь к загруженному файлу на сервере (может быть необходим plugin-программе в случае, если используется загрузка по относительному пути).
- downloadfilefromserver. Осуществляет запрос к серверу на скачивание одного файла с сервера на клиентский компьютер. Размещение осуществляется в указанном месте на локальной машине. Файл должен существовать в указанном месте серверного компьютера.
Свойство localpath определяет абсолютный путь к файлу на клиентском компьютере, куда следует разместить файл после загрузки с сервера. Свойство serverpath определяет путь на сервере, откуда требуется скачать файл. Может быть задан абсолютный путь или относительный (от каталога серверной службы) - в этом случае поле isrelative должно быть указано и иметь значение "1".
Структура запроса:
<property_set name="downloadfilefromserver" id="..."> <property_cdata key="localpath"><![CDATA[...]]></property_cdata> <property_cdata key="serverpath"><![CDATA[...]]></property_cdata> <property_simple key="isrelative" value="0" /> </property_set>
Ответ содержит стандартные поля resultcode и resultdescription, а также поле downloadresult - «1» в случае успешного закачивания файла, «0» в случае не обнаружения файла в указанном месте сервера.
- deletefilefromserver. Осуществляет запрос к серверу на удаление одного файла с сервера. Файл должен существовать в указанном месте серверного компьютера.
Свойство serverpath определяет путь на сервере, откуда требуется скачать файл. Может быть задан абсолютный путь или относительный (от каталога серверной службы) - в этом случае поле isrelative должно быть указано и иметь значение "1".
Структура запроса:
<property_set name="deletefilefromserver" id="..."> <property_cdata key="serverpath"><![CDATA[...]]></property_cdata> <property_simple key="isrelative" value="0" /> </property_set>
Ответ содержит стандартные поля resultcode и resultdescription, а также поле deleteresult - «1» в случае успешного удаления файла, «0» в случае не обнаружения файла в указанном месте сервера или запрета на удаление.
- showdirectoryonserver. Осуществляет запрос к серверу на получение структуры указанного каталога.
Свойство serverpath определяет путь на сервере к исследуемому каталогу, структуру которого требуется получить. Может быть задан абсолютный путь или относительный (от каталога серверной службы) - в этом случае поле isrelative должно быть указано и иметь значение "1". Установленные поля showfiles и showdirs определяют соответственно перечисление файлов и подкаталогов. Поле pattern определяет маску выборки элементов (например *.txt).
Структура запроса:
<property_set name="showdirectoryonserver" id="..."> <property_cdata key="serverpath"><![CDATA[...]]></property_cdata> <property_simple key="isrelative" value="0" /> <property_simple key="showfiles" value="1" /> <property_simple key="showdirs" value="0" /> <property_cdata key="pattern"><![CDATA[...]]></property_cdata> </property_set>
Ответ содержит стандартные поля resultcode и resultdescription, а также поле showdirectoryresult - «0» в случае отсутствия каталога по указанному пути, и «1» в случае успешного выполнения операции. Раздел consistence содержит перечисление обнаруженных элементов.
Структура ответа:
<property_set name="showdirectoryonserver" id="..."> <property_simple key="resultcode" value="100" name="Success" /> <property_simple key="resultdescription" value="Success" /> <property_simple key="showdirectoryresult" value="1" name="success" /> <property_collection name="consistence" count="2"> <property_set name="directories"> <property_cdata key="dir" value="0"><![CDATA[Subdir1]]></property_cdata> <property_cdata key="dir" value="1"><![CDATA[Subdir2]]></property_cdata> <property_cdata key="dir" value="2"><![CDATA[Subdir3]]></property_cdata> <property_cdata key="dir" value="3"><![CDATA[Subdir4]]></property_cdata> </property_set> <property_set name="files"> <property_cdata key="file" value="0"><![CDATA[1.txt]]></property_cdata> </property_set> ................ </property_collection> </property_set>