Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Есть задача приделать web интерфейс к куче файлов в отдельном каталоге. Хотелось бы получить список относительных или абсолютных путей для всех файлов в папке и подпапках. Нашёл вот такой кусок кода в примерах // get list of files via result set Set rs=##class(%ResultSet).%New("%File.FileSet") Do rs.Execute(dir,"*.csp") Но отсутствие документации на %File.FileSet не очень вдохновляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2011, 11:42 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
FileSet - это запрос, а не метод, поэтому правильно так: set rs=##class(%ResultSet).%New("%File:FileSet") Также Вам могут пригодиться готовые ZEN-компоненты: %ZEN.Dialog.fileSelect %ZEN.Component.fileUpload ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2011, 12:56 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
servit, Спасибо, разобрался. Что странно, если выгружать имена файлов в %ResultSet то всё нормально. А если в %SQL.Statement ошибка. Дескать юзер не имеет прав доступа. Может заодно подскажете как относительный путь до файла превратить в гиперссылку? Чтобы не было проблем с русскими буквами и пробелами в путях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2011, 22:18 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
У меня никаких ошибок не возникает (2011.1.FT2): ClassMethod Test() As %Status [ ZenMethod ] { #dim ex As %Exception.AbstractException try{ set st = ##class(%SQL.Statement).%New() $$$ThrowOnError(st.%PrepareClassQuery("%File","FileSet")) set rs = st.%Execute(,"*.txt") while rs.%Next() { do rs.%Print() } }catch ex{ write $system.Status.GetErrorText(ex.AsStatus(),"ru"),! } quit $$$OK } } Для обработки имени файла используйте методы: %File : NormalizeDirectory NormalizeFilename NormalizeFilenameWithSpaces ... %CSP.Page : EscapeURL Link ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2011, 23:38 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
servit, Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 09:42 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
servit, Попытал я перечисленные методы. И нарисовалась вот какая проблема. У меня win машина и она генерит пути со слешем наклоненным в другую сторону. Методы EscapeURL и Link тупо кодируют обратные слеши хотя между ними имена папок которые очень даже нужно сохранить. Допустим есть путь \Icons\IISS.52\table_properties_zoom_128.png EscapeURL делает из него %5CIcons%5CIISS.52%5Ctable_properties_zoom_128.png Когда мне по идее надо только слеши в обратную сторону повернуть чтоб можно было сгенерить ссылку на указанный файл. Получается надо парсить путь к файлу менять там слеши и потом подавать это на EscapeURL? Есть вариант проще? Типа скормил данный путь методу, а он выдаёт URL до папки или кусок URL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 17:18 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
попробуйте вместо escapeurl сделать EscapeHTML или $zcvt(text,"O","HTML") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 17:42 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Может єто и не спортивно, но однозначно проще :) s url=$tr(url,"\","/") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 18:09 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., В обоих случаях возвращается путь который вводил. Ещё будут варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 18:13 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Хотя везде сам использую s fn=..EscapeURL(fn) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 18:16 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
gr_vl, По тупому перевернуть слеши :) Попробую так. Наверное получиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 18:18 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Станислав Вл.В обоих случаях возвращается путь который вводил. Ещё будут варианты? Ну видимо я неправильно понял вашу цель. Мне непонятна проблема, по-моему, логично хотеть увидеть тот путь, который вводили. Если вам нужно передать путь через парамерт url, то вам нужно делать через EscapeURL/UnescapeURL. Если вам нужно перевернуть слеши, то нужно использовать $tr. А если вам нужно в html отобразить пути без ошибок, то нужно использовать EscapeHTML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2011, 20:49 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
посмотрите в %File есть методы NormalizeFilename() NormalizeDirectory() NormalizeFilenameWithSpaces() может оно поможет в кодах можно посмотреть параметры и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2011, 11:04 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., Мне надо было сгенерить правый кусок URL с именами папок из полного пути. Того что сказано хватило. Спс. Есть новый вопрос. Как в embedded sql обозначить условие where при котором левый операнд может включать часть правого(строку). &sql(DECLARE Count CURSOR FOR SELECT COUNT (ID) INTO :count FROM "Contacts" WHERE Name %CONTAINS(:str) Т.е. нужны все контакты у которых поле Nаme включает значение переменной str При компиляции вылазит ошибка -472 "Ожидалось свойство коллекции". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2011, 19:33 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Станислав Вл.Как в embedded sql обозначить условие where при котором левый операнд может включать часть правого(строку). &sql(DECLARE Count CURSOR FOR SELECT COUNT (ID) INTO :count FROM "Contacts" WHERE Name %CONTAINS(:str) попробуйте (не проверял) Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2011, 20:21 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., Работают оба варианта, но первый в 3-и раза быстрее второго. Такой вопрос. Надо выводить постранично контент в html. Типа как в поисковиках обозначаются множество страничек с результатом запроса. Вопрос в том как мне узнать с какого ID начинаются вторые 100 строк датасета, третьи и т.д? Чтобы извлекать вторые и третьи странички результатов. Желательно так чтобы такое можно было описать встроенным sql, а не динамическим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2011, 15:42 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Ну тут я вижу два варианта. Первый - пройтись по всем страницам и результат сохранить куда-нибудь, а потом при выборе страницы выбирать данные выбраной страницы. Второй(условие - обязательно должна быть сортировка однозначная сортировка) - запоминать последнюю запись, вернее, ее параметры для сортировки, и следующую страницу выбирать, используя дополнительные условия, которые исключат попадание предыдущих страниц. При этом варианте мы не сможем определить, сколько у нас всего страниц, но он значительно менее затратный, чем первый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2011, 16:23 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Развитие второго варианта - при одинаковой сортировке запоминать количество ранее выгруженных записей или номер страницы Что-то вроде такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2011, 10:09 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Можно воспользоваться компонентами <tableNavigatorBar> и <tablePane> с включённым режимом Snapshot . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2011, 14:48 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
doublefint, Спасибо за подробные ответы. Буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2011, 10:10 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
а вот интересно. можно ли использовать запрос FileSet в tablePane..? я вот тут что-то типа такого накидала, ошибки нет, но и записей не возвращает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. при всем при этом, вот такой зен-метод правильно считает кол-во файлов в той же директории Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 05:01 |
|
||
|
Как прочитать список файлов в COS
|
|||
|---|---|---|---|
|
#18+
Аленочка , Следующий пример у меня работает (2011.1.RC1): Class sql.ru Extends %ZEN.Component.page { /// Имя приложения, которому принадлежит эта страница. Parameter APPLICATION; /// Отображаемое имя для нового приложения. Parameter PAGENAME; /// Домен, используемый для локализации. Parameter DOMAIN; /// Этот блок Style содержит определение CSS-стиля страницы. XData Style { <style type="text/css"> </style> } /// Этот XML блок описывает содержимое этой страницы. XData Contents [ XMLNamespace = " http://www.intersystems.com/zen" ] { <page xmlns=" http://www.intersystems.com/zen" title=""> <tablePane id="table" showQuery="true" bodyHeight="10em" fixedHeaders="true" maxRows="50" queryClass="%Library.File" queryName="FileSet" dataSource="columns" > <parameter value="C:\UPLOAD\"/> <parameter value="*.jpg"/> <parameter value=""/> <parameter value="0"/> <parameter value=";"/> <column header="Файл" colName="Name" /> <column header="Тип" colName="Type" /> </tablePane> </page> } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2011, 08:18 |
|
||
|
|

start [/forum/topic.php?fid=39&gotonew=1&tid=1557688]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
91ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 391ms |

| 0 / 0 |
