Client-Server Protocol RU

Version 40 (Troex Nevelin, 02.02.2010 01:37)

1 1
h1. Описание протокола клиент-сервер
2 1
3 4 Troex Nevelin
{{>toc}}
4 4 Troex Nevelin
5 6 Troex Nevelin
_Коннектор (connector)_ - обрабатывается на сервере (PHP, Python). _Клиент (client)_ - обрабатывается на стороне пользователя в браузере (JavaScript). Когда пользователь выполняет какое-либо действие с файлами _клиент_ отправляет на сервер (в _коннектор_) запрос и получает ответ. _Коннектор_ получает данные от _клиента_ через GET или через POST (только при загрузке _upload_ и редактировании _edit_). _Коннектор_ всегда возвращает _клиенту_ объект JSON.
6 1
7 2 Troex Nevelin
Обязятельный параметр, всегда ожидаемый коннектором - *cmd* - имя команды, пример: @http://localhost/connector.php?cmd=open@
8 1
9 2 Troex Nevelin
Для любой команды ответ коннектора может содержать следующие параметры:
10 2 Troex Nevelin
* *error* : Строка с сообщением об ошибке
11 2 Troex Nevelin
* *errorData* : Массив с сообщениями о нефатальных ошибках
12 36 Troex Nevelin
* *select* : hash файла/директории, которые необходимо выделить после перерисовки контента (upload, mkdir, mkfile и т.д.) или же массив с hash'ами которые необходимо выделить
13 2 Troex Nevelin
* *debug* : массив с отладочной информацией
14 1
15 1
Команды клиентской части не полностью совпадают с командами коннектора:
16 2 Troex Nevelin
* *reload*, *back* - реализуются серверной командой *open*
17 2 Troex Nevelin
* *list*, *icons*, *quicklook*, *copy*, *cut* - работают только на клиенте и не обращаются к коннектору
18 1
19 2 Troex Nevelin
Любая команда, получившая некорректные аргументы, прекращает дальнейшее выполнение и возвращает *error* (сообщение об ошибке); исключение *open* - возвращает сообщение об ошибке и контент корневой директории.
20 4 Troex Nevelin
21 3 Troex Nevelin
*Внимание!* Пути к файлам не передаются в чистом виде, только hash от пути (md5 или любая другая hash-функция).
22 1
23 7 Troex Nevelin
h2. Инициализация файлового менеджера
24 1
25 7 Troex Nevelin
Аргументы передаваемые клиентом коннектору (клиент -> сервер):
26 6 Troex Nevelin
* *cmd* : open
27 6 Troex Nevelin
* *init* : true
28 1
* *tree* : true
29 6 Troex Nevelin
30 20 Troex Nevelin
Пример: @http://localhost:8001/~troex/cgi/connector.py?cmd=open&init=true&tree=true@
31 7 Troex Nevelin
32 7 Troex Nevelin
Ответ (сервер -> клиент): смотрите описание команды [[Client-Server_Protocol_RU#open|open]], плюс дополнительно ответ включает:
33 12 Troex Nevelin
34 6 Troex Nevelin
* *disabled* : (Array) список отключенных команд
35 22 Troex Nevelin
* *params*: (Object) 
36 22 Troex Nevelin
** *url*: (String) 
37 22 Troex Nevelin
** *dotFiles* : (Boolean) разрешено ли показывать скрытые файлы, начинающиеся с точки
38 22 Troex Nevelin
** *uplMaxSize* : (String) макимальный разрешенный размер загружаемых файлов (например: 128M)
39 22 Troex Nevelin
** *archives* : (Array) Список mime-типов архивов, которые могут быть созданы коннектором
40 22 Troex Nevelin
** *extract* : (Array) Список mime-типов архивов, которые коннектор может распаковать
41 12 Troex Nevelin
42 12 Troex Nevelin
Пример корректного ответа:
43 12 Troex Nevelin
44 17 Troex Nevelin
!elFinder-init.png!
45 1
46 20 Troex Nevelin
JSON:
47 21 Troex Nevelin
<pre><code class="json">
48 12 Troex Nevelin
{
49 15 Troex Nevelin
    "cwd": {
50 19 Troex Nevelin
        "name"  : "Home",
51 19 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125",
52 19 Troex Nevelin
        "rel"   : "Home",
53 19 Troex Nevelin
        "date"  : "30 Jan 2010 14:25",
54 19 Troex Nevelin
        "mime"  : "directory",
55 19 Troex Nevelin
        "size"  : 0,
56 19 Troex Nevelin
        "read"  : true,
57 19 Troex Nevelin
        "write" : true,
58 19 Troex Nevelin
        "rm"    : false
59 15 Troex Nevelin
    },
60 14 Troex Nevelin
    "cdc": [
61 14 Troex Nevelin
    {
62 19 Troex Nevelin
        "name"  : "test",
63 19 Troex Nevelin
        "hash"  : "ac4b61565950a73395c871f9c3fc7362",
64 19 Troex Nevelin
        "date"  : "Today 14:11",
65 19 Troex Nevelin
        "mime"  : "directory",
66 19 Troex Nevelin
        "size"  : 102,
67 19 Troex Nevelin
        "read"  : true,
68 19 Troex Nevelin
        "write" : true,
69 19 Troex Nevelin
        "rm"    : true
70 1
    },
71 17 Troex Nevelin
    {
72 19 Troex Nevelin
        "name"  : "link to README", 
73 19 Troex Nevelin
        "hash"  : "4fc059e61577f0267fbd6c1c5bafb1b4", 
74 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt", 
75 19 Troex Nevelin
        "date"  : "Today 16:50", 
76 19 Troex Nevelin
        "mime"  : "text/plain", 
77 19 Troex Nevelin
        "size"  : 10, 
78 19 Troex Nevelin
        "read"  : true, 
79 19 Troex Nevelin
        "write" : true, 
80 19 Troex Nevelin
        "rm"    : true, 
81 19 Troex Nevelin
        "link"  : "8d331825ebfbe1ddae14d314bf81a712", 
82 19 Troex Nevelin
        "linkTo": "Home/README.txt", 
83 19 Troex Nevelin
        "parent": "b4473c8c08d1d499ecd7112f3398f125"
84 17 Troex Nevelin
    }, 
85 17 Troex Nevelin
    {
86 19 Troex Nevelin
        "name"  : "logo.png", 
87 19 Troex Nevelin
        "hash"  : "a696323d7fd86513754004ba8bc12967", 
88 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/logo.png", 
89 19 Troex Nevelin
        "date"  : "11 Nov 2009 21:57", 
90 19 Troex Nevelin
        "mime"  : "image/png", 
91 19 Troex Nevelin
        "size"  : 18782, 
92 19 Troex Nevelin
        "read"  : true, 
93 19 Troex Nevelin
        "write" : true, 
94 19 Troex Nevelin
        "rm"    : true
95 17 Troex Nevelin
    }, 
96 14 Troex Nevelin
    {
97 19 Troex Nevelin
        "name"  : "README.txt",
98 19 Troex Nevelin
        "hash"  : "8d331825ebfbe1ddae14d314bf81a712",
99 19 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt",
100 19 Troex Nevelin
        "date"  : "Today 14:25",
101 19 Troex Nevelin
        "mime"  : "text/plain",
102 19 Troex Nevelin
        "size"  : 1171,
103 19 Troex Nevelin
        "read"  : true,
104 19 Troex Nevelin
        "write" : true,
105 19 Troex Nevelin
        "rm"    : true
106 14 Troex Nevelin
    }
107 14 Troex Nevelin
    ],
108 14 Troex Nevelin
    "tree": {
109 19 Troex Nevelin
        "name"  : "Home",
110 19 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125",
111 19 Troex Nevelin
        "read"  : true,
112 19 Troex Nevelin
        "write" : true,
113 19 Troex Nevelin
        "dirs"  : [
114 14 Troex Nevelin
        {
115 19 Troex Nevelin
            "name"  : "test",
116 19 Troex Nevelin
            "hash"  : "ac4b61565950a73395c871f9c3fc7362",
117 19 Troex Nevelin
            "read"  : true,
118 19 Troex Nevelin
            "write" : true,
119 19 Troex Nevelin
            "dirs"  : [
120 14 Troex Nevelin
            {
121 19 Troex Nevelin
                "name"  : "test2",
122 19 Troex Nevelin
                "hash"  : "b3615611cf9f8f6a8821ef20eda450b5",
123 19 Troex Nevelin
                "read"  : true,
124 19 Troex Nevelin
                "write" : true,
125 19 Troex Nevelin
                "dirs"  : []
126 14 Troex Nevelin
            }
127 14 Troex Nevelin
            ]
128 14 Troex Nevelin
        }
129 14 Troex Nevelin
        ],
130 14 Troex Nevelin
    },
131 19 Troex Nevelin
    "disabled"  : [],
132 19 Troex Nevelin
    "params"    : {
133 19 Troex Nevelin
        "url"        : "http://localhost:8001/~troex/git/elfinder/files/wiki",
134 19 Troex Nevelin
        "dotFiles"   : true,
135 1
        "uplMaxSize" : "15M",
136 1
        "extract"    : [
137 1
            "application/x-7z-compressed",
138 1
            "application/x-tar",
139 1
            "application/x-gzip",
140 1
            "application/x-bzip2",
141 1
            "application/zip"
142 1
        ],
143 1
        "archives"   : [
144 1
            "application/x-7z-compressed",
145 1
            "application/x-tar",
146 1
            "application/x-gzip",
147 1
            "application/x-bzip2",
148 1
            "application/zip"
149 1
        ]
150 1
    }
151 1
}
152 1
</code></pre>
153 40 Troex Nevelin
154 40 Troex Nevelin
h2. Список команд
155 40 Troex Nevelin
156 40 Troex Nevelin
*open* - открыть директорию или вывести содержимое файла в браузер
157 40 Troex Nevelin
*mkdir* - создать директорию
158 40 Troex Nevelin
*mkfile* - создать текстовый файл
159 40 Troex Nevelin
*rename* - переименовать директориб или файл
160 40 Troex Nevelin
*upload* - загрузить файлы
161 40 Troex Nevelin
*ping* - служебная команда. необходима для Safari (загрузка файлов)
162 40 Troex Nevelin
*paste* - скопировать или переместить файлы/директории в указанную директорию
163 40 Troex Nevelin
*rm* - удалить директорию/файлы
164 40 Troex Nevelin
*duplicate* - сделать копию директории/файла
165 40 Troex Nevelin
*read* - вернуть содержимое текстового файла
166 40 Troex Nevelin
*edit* - сохранить текст в файл
167 40 Troex Nevelin
*extract* - распаковать архив
168 40 Troex Nevelin
*archive* - сжать директории/файлы в архив
169 40 Troex Nevelin
*tmb* - создать превьюшки для картинок, не имеющих их
170 40 Troex Nevelin
*resize* - изменить размер изображения
171 2 Troex Nevelin
172 6 Troex Nevelin
h2. Описание команд
173 1
174 8 Troex Nevelin
h3. open
175 1
176 8 Troex Nevelin
Возвращает содержимое директории или выводит файл в браузер.
177 9 Troex Nevelin
178 1
1. Открытие директории
179 6 Troex Nevelin
180 6 Troex Nevelin
Аргументы:
181 6 Troex Nevelin
* *cmd* : open
182 9 Troex Nevelin
* *target* : hash пути директории
183 1
* *tree* : Не обязательный параметр. Если задан - дополнительно вернуть дерево директорий
184 9 Troex Nevelin
185 27 Troex Nevelin
Ответ должен содержать (Object) _cwd_ и массив (Array) _cdc_, дополнительно может присутствовать (Object) _tree_, пример:
186 23 Troex Nevelin
<pre><code class="json">
187 1
{
188 25 Troex Nevelin
    "cwd" : { // (Object) Current Working Directory - Информация о текущей директории
189 23 Troex Nevelin
        "name"  : "Home",                             // (String)  Имя директории
190 26 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125", // (String)  hash от абсолютного пути файла на сервере
191 23 Troex Nevelin
        "mime"  : "directory",                        // (String)  всегда "directory"
192 23 Troex Nevelin
        "rel"   : "Home",                             // (String)  относительный путь до текущей директории
193 23 Troex Nevelin
        "size"  : 0,                                  // (Number)  размер директории в байтах
194 23 Troex Nevelin
        "date"  : "30 Jan 2010 14:25",                // (String)  время изменения (mtime)
195 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
196 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
197 23 Troex Nevelin
        "rm"    : false                               // (Boolean) право на удаление
198 23 Troex Nevelin
    },
199 23 Troex Nevelin
    "cdc" : [ // (Array) (of Objects) Current Directory Content - Информация о содержимом текущей директории
200 1
    {
201 23 Troex Nevelin
        "name"  : "link to README",                   // (String)  Имя директории/файла
202 23 Troex Nevelin
        "hash"  : "4fc059e61577f0267fbd6c1c5bafb1b4", // (String)  hash
203 23 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt", // (String) URL
204 23 Troex Nevelin
        "date"  : "Today 16:50",                      // (String)  время изменения (mtime)
205 23 Troex Nevelin
        "mime"  : "text/plain",                       // (String)  MIME тип файла или "directory"
206 23 Troex Nevelin
        "size"  : 10,                                 // (Number)  размер директории в байтах
207 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
208 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
209 23 Troex Nevelin
        "rm"    : true,                               // (Boolean) право на удаление
210 23 Troex Nevelin
        "link"  : "8d331825ebfbe1ddae14d314bf81a712", // (String)  только для ссылок, hash файла
211 23 Troex Nevelin
                                                      //           на который ведёт ссылка
212 23 Troex Nevelin
        "linkTo": "Home/README.txt",                  // (String)  только для ссылок, относительный путь
213 23 Troex Nevelin
                                                      //           до файла, на который указывает ссылка
214 23 Troex Nevelin
        "parent": "b4473c8c08d1d499ecd7112f3398f125"  // (String)  только для ссылок, hash директории
215 23 Troex Nevelin
                                                      //           в который находиться файл, на который
216 23 Troex Nevelin
                                                      //           указывает ссылка
217 1
    },
218 23 Troex Nevelin
    {
219 23 Troex Nevelin
        // ...
220 23 Troex Nevelin
    }
221 23 Troex Nevelin
    ],
222 23 Troex Nevelin
    "tree" : { // (Object) Дерево директорий. Не обязательный параметр, только если был передан аргумент "tree"
223 23 Troex Nevelin
	    "name"  : "Home",                             // (String)  Имя директории
224 23 Troex Nevelin
        "hash"  : "b4473c8c08d1d499ecd7112f3398f125", // (String)  hash
225 23 Troex Nevelin
        "read"  : true,                               // (Boolean) право на чтение
226 23 Troex Nevelin
        "write" : true,                               // (Boolean) право на запись
227 23 Troex Nevelin
        "dirs"  : [                                   // (Array) (of Objects) массив дочерних директории
228 23 Troex Nevelin
        {
229 23 Troex Nevelin
            "name"  : "test",
230 23 Troex Nevelin
            "hash"  : "ac4b61565950a73395c871f9c3fc7362",
231 23 Troex Nevelin
            "read"  : true,
232 23 Troex Nevelin
            "write" : true,
233 23 Troex Nevelin
            "dirs"  : [
234 23 Troex Nevelin
            {
235 23 Troex Nevelin
                // ...
236 23 Troex Nevelin
            },
237 23 Troex Nevelin
            {
238 23 Troex Nevelin
                // ...
239 23 Troex Nevelin
            }
240 23 Troex Nevelin
            ]
241 23 Troex Nevelin
        }
242 23 Troex Nevelin
    }
243 8 Troex Nevelin
}
244 23 Troex Nevelin
</code></pre>
245 23 Troex Nevelin
246 27 Troex Nevelin
*Внимание!* Если передан некорректный аргумент *target*, возвращает контент корневой директории (_cdc, cdw_) и сообщение об ошибке (_error_).
247 8 Troex Nevelin
248 1
2. Открытие файла (вывод содержимого в браузер).
249 1
250 1
Аргументы:
251 1
* *cmd* : open
252 8 Troex Nevelin
* *target* : hash пути файла
253 27 Troex Nevelin
* *current* : hash пути к директории, где находится файл
254 1
255 8 Troex Nevelin
Ответ:
256 1
257 27 Troex Nevelin
Файл выводится в браузер с соответствующими заголовками.
258 1
259 8 Troex Nevelin
260 8 Troex Nevelin
h3. mkdir
261 8 Troex Nevelin
262 39 Troex Nevelin
Создать новую директорию.
263 1
264 1
Аргументы:
265 1
* *cmd* : mkdir
266 30 Troex Nevelin
* *current* : hash директории, в которой создаем новую директорию
267 30 Troex Nevelin
* *name* : имя новой директории
268 1
269 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] с деревом директорий _tree_ и *select* - hash новой директории
270 34 Troex Nevelin
271 32 Troex Nevelin
<pre><code class="json">
272 32 Troex Nevelin
{
273 32 Troex Nevelin
    // open
274 32 Troex Nevelin
    "cwd"   : {
275 32 Troex Nevelin
        // ...
276 32 Troex Nevelin
    },
277 32 Troex Nevelin
    "cdc"   : [
278 32 Troex Nevelin
        // ...
279 32 Troex Nevelin
    ],
280 32 Troex Nevelin
    "tree"  : {
281 32 Troex Nevelin
        // ...
282 32 Troex Nevelin
    },
283 33 Troex Nevelin
    "select": "ac4b61565950a73395c871f9c3fc7362" // (String) hash новой директории
284 32 Troex Nevelin
}
285 32 Troex Nevelin
</code></pre>
286 30 Troex Nevelin
287 32 Troex Nevelin
288 9 Troex Nevelin
h3. mkfile
289 9 Troex Nevelin
290 1
Создать новый файл.
291 9 Troex Nevelin
292 9 Troex Nevelin
Аргументы:
293 1
* *cmd* : mkfile
294 1
* *current* : hash директории, в которой создаем файл
295 1
* *name* : имя нового файла
296 1
297 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] и *select* - hash нового файла
298 9 Troex Nevelin
299 9 Troex Nevelin
h3. rename
300 9 Troex Nevelin
301 30 Troex Nevelin
Переименование директории/файла
302 1
303 9 Troex Nevelin
Аргументы:
304 9 Troex Nevelin
* *cmd* : rename
305 1
* *current* : hash директории, где файл находится
306 30 Troex Nevelin
* *target* : hash директории/файла для переименования
307 1
* *name* : новое имя директории/файла
308 30 Troex Nevelin
309 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] (если переименовали директорию, то open возвращается с деревом директорий) и *select* - hash переименованной директории/файла
310 1
311 1
h3. upload
312 1
313 1
Загрузка файлов
314 1
315 9 Troex Nevelin
Аргументы (передаются методом POST):
316 9 Troex Nevelin
* *cmd* : upload
317 1
* *current* : hash директории, в которую загружаем файлы
318 1
* *files* : массив файлов
319 30 Troex Nevelin
320 30 Troex Nevelin
Ответ:
321 30 Troex Nevelin
322 30 Troex Nevelin
1. Если ни одного файла не удалось загрузить, возвращаем только
323 1
<pre><code class="json">
324 1
{
325 1
    "error" : "Unable to upload files"
326 30 Troex Nevelin
}
327 1
</code></pre>
328 1
329 36 Troex Nevelin
2. Если хотя бы один файл был загружен, ответ [[Client-Server_Protocol_RU#open|open]] и *select*. Если не были загружены не все файлы от выведутся сообщения об ошибках *error* и *errorData*:
330 36 Troex Nevelin
331 30 Troex Nevelin
<pre><code class="json">
332 30 Troex Nevelin
{
333 30 Troex Nevelin
    // open
334 32 Troex Nevelin
    "select"    : [ "8d331825ebfbe1ddae14d314bf81a712" ], // (Array)  массив hash'ей путей загруженных файлов
335 32 Troex Nevelin
    "error"     : "Some files was not uploaded",          // (String) если не все файлы были загружены
336 32 Troex Nevelin
    "errorData" : {                                       // (Object) инф. о файлах, которые не удалось загрузить
337 32 Troex Nevelin
        "some-file.exe" : "Not allowed file type"         // (String) "имя файла": "ошибка"
338 9 Troex Nevelin
    }
339 1
}
340 30 Troex Nevelin
</code></pre>
341 9 Troex Nevelin
342 9 Troex Nevelin
h3. ping
343 9 Troex Nevelin
344 33 Troex Nevelin
Служебная команда, необходима для исправления бага Safari при загрузке файлов http://www.webmasterworld.com/macintosh_webmaster/3300569.htm
345 1
346 1
Аргументы:
347 32 Troex Nevelin
* *cmd* : ping
348 1
349 1
Ответ: отсылает пустую страницу с заголовком @Connection: close@
350 1
351 1
h3. paste
352 9 Troex Nevelin
353 1
Копирует или перемещает директории/файлы
354 1
355 1
Аргументы:
356 1
* *cmd* : paste
357 32 Troex Nevelin
* *src* : hash директории, из которой перемещаем/копируем файлы
358 32 Troex Nevelin
* *dst* : hash директории, в которую перемещаем/копируем файлы
359 32 Troex Nevelin
* *files* : массив hash'ей копируемых директорий/файлов
360 9 Troex Nevelin
* *cut* : true если файлы перемещаются, false или аргумент отсутствует если файлы копируются
361 1
362 32 Troex Nevelin
Ответ:
363 36 Troex Nevelin
1. Если не удалось скопировать/переместить хотя бы один файл: *error* - сообщение об ошибке
364 9 Troex Nevelin
365 32 Troex Nevelin
2. Если копирование/перемещение прошло успешно, возвращает [[Client-Server_Protocol_RU#open|open]] с деревом директорий.
366 1
367 32 Troex Nevelin
*Внимание!* Команда должна прекращать копирование при первой же ошибке. Не допускается перезапись файлов/директорий с одинаковыми именами.
368 11 Troex Nevelin
369 1
h3. rm
370 11 Troex Nevelin
371 1
Удаление файлов и рекурсивное удаление директорий
372 28 Troex Nevelin
373 1
Аргументы:
374 1
* *cmd* : rm
375 39 Troex Nevelin
* *current* : hash директории, из которой удалем файлы
376 39 Troex Nevelin
* *rm* : массив hash'ей удаляемых директорий/файлов
377 1
378 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] с деревом директорий, при ошибках *error* и *errorData*.
379 1
380 1
h3. duplicate
381 1
382 36 Troex Nevelin
Создает копию директории/файла. Имя копии формируется следующим образом: базовое_имя_файла copy+порядковый номер.расширение (если есть)
383 1
384 1
Аргументы:
385 1
* *cmd* : duplicate
386 39 Troex Nevelin
* *current* : hash директории, в которой создаем дубликат
387 39 Troex Nevelin
* *file* : hash директории/файла, для которого создаем дубликат
388 1
389 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] (если скопировали директорию, то open возвращается с деревом директорий), *select* - hash пути дубликата.
390 11 Troex Nevelin
391 1
h3. read
392 1
393 36 Troex Nevelin
Возвращает содержимое текстового файла.
394 1
395 11 Troex Nevelin
Аргументы:
396 1
* *cmd* : edit
397 39 Troex Nevelin
* *current* : hash директории, в которой читаем файл
398 1
* *file* : hash файла
399 1
400 36 Troex Nevelin
Ответ: *content* - содержимое текстового файла
401 1
402 36 Troex Nevelin
<pre><code class="json">
403 36 Troex Nevelin
{
404 36 Troex Nevelin
    "content": "Hello world!" // (String) содержимое текстового фала 
405 36 Troex Nevelin
}
406 36 Troex Nevelin
</code></pre>
407 36 Troex Nevelin
408 1
h3. edit
409 1
410 36 Troex Nevelin
Сохраняет полученный текст в файл.
411 1
412 11 Troex Nevelin
Аргументы (передаются методом POST):
413 11 Troex Nevelin
* *cmd* : edit
414 36 Troex Nevelin
* *current* : hash директории, в которой сохраняется файл
415 1
* *file* : hash файла
416 1
* *content* : новое содержимое файла
417 1
418 37 Troex Nevelin
Ответ: *file* - объект, аналогичный описывающему файл в секции _cdc_ команды [[Client-Server_Protocol_RU#open|open]]
419 36 Troex Nevelin
<pre><code class="json">
420 1
{
421 38 Troex Nevelin
    "file" : {
422 37 Troex Nevelin
        "name"  : "README.txt",
423 37 Troex Nevelin
        "hash"  : "8d331825ebfbe1ddae14d314bf81a712",
424 37 Troex Nevelin
        "url"   : "http://localhost:8001/~troex/git/elfinder/files/wiki/README.txt",
425 37 Troex Nevelin
        "date"  : "Today 14:25",
426 37 Troex Nevelin
        "mime"  : "text/plain",
427 37 Troex Nevelin
        "size"  : 1171,
428 37 Troex Nevelin
        "read"  : true,
429 37 Troex Nevelin
        "write" : true,
430 37 Troex Nevelin
        "rm"    : true
431 37 Troex Nevelin
    }
432 1
}
433 1
</code></pre>
434 1
435 1
h3. extract
436 1
437 36 Troex Nevelin
Распаковывает архив.
438 1
439 1
Аргументы:
440 1
* *cmd* : extract
441 36 Troex Nevelin
* *current* : hash директории, в которой находится файл
442 1
* *target* : hash файла архива
443 1
444 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]] с деревом директорий
445 1
446 1
h3. archive
447 1
448 36 Troex Nevelin
Упаковывает директории/файлы в архив.
449 1
450 1
Аргументы:
451 1
* *cmd* : archive
452 1
* *type* : mime-тип создаваемого архива
453 39 Troex Nevelin
* *current* : hash директории, в которой находятся добавляемые в архив директории/файлы
454 39 Troex Nevelin
* *files* : массив хэшей директорий/файлов
455 31 Troex Nevelin
456 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]], *select* - hash нового архива
457 31 Troex Nevelin
458 31 Troex Nevelin
h3. tmb
459 31 Troex Nevelin
460 31 Troex Nevelin
Фоновая команда. Создает миниатюрки для картинок, не имеющих их. Кол-во создаваемых за раз миниатюрок, указывается в [[Connector_Configuration_RU|конфиге коннектора]] опцией _tmbAtOnce_. По умолчанию - 5.
461 31 Troex Nevelin
462 31 Troex Nevelin
Аргументы:
463 31 Troex Nevelin
* *cmd* : tmb
464 31 Troex Nevelin
* *current* : hash пути к директории, в которой создаем миниатюрки
465 31 Troex Nevelin
466 31 Troex Nevelin
Ответ:
467 31 Troex Nevelin
<pre><code class="json">
468 31 Troex Nevelin
{
469 31 Troex Nevelin
    "current": "b4473c8c08d1d499ecd7112f3398f125", // (String) hash пути к директории, в которой были созданы миниатюрки
470 31 Troex Nevelin
    "images" : {                                   // (Object)
471 31 Troex Nevelin
        "a696323d7fd86513754004ba8bc12967":        // (String) hash пути файла
472 31 Troex Nevelin
            "http://localhost:8001/~troex/git/elfinder/files/.tmb/a696323d7fd86513754004ba8bc12967.png"
473 31 Troex Nevelin
                                                   // (String) URL миниатюрки
474 31 Troex Nevelin
    }, 
475 31 Troex Nevelin
    "tmb": true  // (Boolean) возвращает true если ещё остались картинки для которых не были созданы миниатюрки,
476 11 Troex Nevelin
                 // иначе параметр отсутствует
477 11 Troex Nevelin
}
478 11 Troex Nevelin
</code></pre>
479 11 Troex Nevelin
480 11 Troex Nevelin
h3. resize
481 1
482 36 Troex Nevelin
Изменение размера изображения.
483 1
484 1
Аргументы:
485 1
* *cmd* : resize
486 36 Troex Nevelin
* *current* : hash директории, в которой находится файл
487 36 Troex Nevelin
* *file* : hash пути изображения
488 36 Troex Nevelin
* *width* : новая ширина изображения
489 36 Troex Nevelin
* *height* : новая высота изображения
490 1
491 36 Troex Nevelin
Ответ: [[Client-Server_Protocol_RU#open|open]], *select* - hash пути изображения