• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Длинные пути в имени файла-вложения

  • Автор темы Klido
  • Дата начала
K

Klido

Не секрет, что многие "грамотные" пользователи любят создать N уровней папок на файловом хранилище и назвать файл пострашнее/подлиннее. Лотус при попытке приаттачить такое файло (в ртф-поле) ругается в основном "файл такой-то не найден" и вложения не делает.
Некоторое время проблема обходила меня стороной, но вот возникла ситуация, когда надо пользователям аттачить подобные файлы. И, понятно, напрячь их копировать сначала файл ручками куда-то покороче никак невозможно...
Не приходилось ли кому решать подобную проблему и каким способом?

Возможно, и не в длине пути дело - имена файлов и папок там с точками, пробелами - может такой путь лотус не хавает?
 
Последнее редактирование модератором:
H

hosm

по теме: глючило добавление аттача лотусскриптом, когда в имени файла 2 или более !, пробелы и точки вроде как не мешали.
за ограничение по длине пути - смотрела, точно не помню, что в итоге вышло - может быть, ошибка скорее операционки, чем лотуса.
как файл аттачится - в уи на собаках?
 
Последнее редактирование модератором:
K

Klido

ак файл аттачится - в уи на собаках?
простой способ - скрепка на рт-лайт поле типа аттачмент - сообщение "Файл не найден" или "Путь недоступен"
скриптом в бэкграунде по хотспоту - ошибка 4225...

что прикольно - из предыдущих моих тем про показ аттачей повторно внизу документа - вот тут внизу аттачи добавляются! :welcome: рт-поля пустые после ошибки, но вложения в документе есть и видны внизу документа ;)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
что прикольно - из предыдущих моих тем про показ аттачей повторно внизу документа - вот тут внизу аттачи добавляются! :welcome: рт-поля пустые после ошибки, но вложения в документе есть и видны внизу документа ;)
Может РТ-поле в подформе?

Name oldName As newName - переименовывает файл/дирректорию (может не быть нужного доступа).
FileCopy - копирование файла.
 
H

hosm

простой способ - скрепка на рт-лайт поле типа аттачмент - сообщение "Файл не найден" или "Путь недоступен"
с рт-лайтом с точками и пробелами в пути и имени файла с сетевого диска работает на лн7 замечательно :welcome:
посмотри в сторону ограничения на длину пути...
кстати, сколько хоть там в итоге путь получился, интересно?

внизу документа аттачи обычно, когда лотус сам аттач переименовывает. Это либо при дублировании имени, либо при наличии каких-то спецсимволов (вот у меня такое воспроизводилось с "!!" - в имя аттача писалось то, что было справа от этих символов.
по ходу - еще запятую проверь, с ней багов не помню, но чего-то проверки на нее видела)
 
A

Akupaka

FileCopy - копирование файла.
+1

нотесовыый диалог не хавает больше 255 символов в латинице, если кириллица, то один символ за два...
страшная папка - Мои документы )))

глючило добавление аттача лотусскриптом, когда в имени файла 2 или более !
ага, имя пропадает, если не ошибаюсь
 
A

Akupaka

тогда как получить имя файла, если не из диалога выбора? FileCopy над чем осуществлять?
оу... протупил )))
вроде, метод, который аттачит хавает длинные пути, а сам диалог - нет, FileCopy там в общем и не нужен, получается... давно это было...
а как же мы делали? может, забили? я уже и не помню...
кто там помнит как системный диалог выбора файла показать АПИшками?
 
N

nvyush

оу... протупил )))
вроде, метод, который аттачит хавает длинные пути, а сам диалог - нет, FileCopy там в общем и не нужен, получается... давно это было...
а как же мы делали? может, забили? я уже и не помню...
кто там помнит как системный диалог выбора файла показать АПИшками?
Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ. Думаю, построить пользователей будет проще, чем написать свой диалог выбора файла с "неограниченной" длиной пути. По крайней мере объяснение, что это ограничение ОС, а не Лотуса должно их удовлетворить.

Добавлено
Можно рт-лайтную скрепку заменить хотспотом с ЛС-кодом, отлавливать вышеуказанную ошибку и выводить своё сообщение об ошибке с настоятельной рекомендацией переместить/переименовать файл.
 
K

Klido

а как же мы делали? может, забили? я уже и не помню..
в своё время именно забили :what?: вот думал полегчало с ростом винды и лотуса в версиях, ан нет....

построить пользователей будет проще
никак нет :( террабайты файлов на файловом сервере, накопленные за годы работы... это не пройдёт :(
в фоне копировать файло в тмр и потом аттачить - единственный, пожалуй, выход...
но...
Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ
 
N

nvyush

в своё время именно забили :what?: вот думал полегчало с ростом винды и лотуса в версиях, ан нет....


никак нет :( террабайты файлов на файловом сервере, накопленные за годы работы... это не пройдёт :(
в фоне копировать файло в тмр и потом аттачить - единственный, пожалуй, выход...
но...
Как вариант (хреновый) — наиболее востребованную глубоко зарытую папку сделать сетевым ресурсом — путь подсократится
 
A

Akupaka

Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ
в том-то и дело, что лотус из него забирает только 255 символов, на сколько помню, но апишный диалог позволяет и больше...
 
V

vital

апишный диалог позволяет и больше...
ЭЭ.. Как бе нет.. В Винде макс длина пути 256. Ограничено в API.

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Это легко проверить</div></div><div class="sp-body"><div class="sp-content">

Создай для опыта такой вот .cmd файл:

Set MyFolder="D:\Имя папки длиной 244 символа -01234567890123456789012345678901234567890123456789012345678901234567890123456789
01234567890123456789012345678901234567890123456789012345678901234567890123456789
0
12345678901234567890123456789012345678901234567890123"
MkDir %MyFolder%
Echo Test! >> %MyFolder%\01234567890
Запусти! Теперь зайди в созданную папку (откуда угодно - из Проводника, из Far / Total Commander, из своей собственной оболочки) и попытайся создать хоть какую-то папку! Нихрена не получится! :what?:)
Итак, максимальная длина имени папки - 244 символа, попытаешься больше - получишь: "Имя файла или его расширение имеет слишком большую длину".
Внутри этой папки нельзя создавать подпапки (даже однобуквенные!), но можно создать файл, у которого Имя + Расширение <= 11 символов (больше - низя!! почему 11? 8+3 - формат DOS'овского имени).
Суммарно получается: 244 + 11 = 255 символов - открываем windows.h и видим: #define MAXPATH 256 - вах-вах-вах! Какие молодцы Мелкомягкие, не обманули на этот раз :(
Мораль: в программах под Windows для хранения имён файлов / путей для задания размера используем MAXPATH (например: char FileName[MAXPATH]) и надеемся, что в наследнице Vista - Windows 7 Vienna (или в Longhorn) MAXPATH будет увеличиваться пропорционально увеличению возможностей файловой системы ОС.
Ссылку в мсдн искать лень..
 
K

Klido

ну это про путь полный.. сейчас изучаю что есть в файлах - там в именах и запятые, и точки, и иные символы... всё больше чувствую, что именно в символах дело, осталось понять что гарантированно не нравится....
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
не знаю - можноли перехватить ошибку в форме, не пробовал
ежели можно - переключить на свой выбор (нативный ДБ)
 
T

TIA

сылку в мсдн искать лень..

Зря. "Проводник" же нормально работает с длинными путями.

In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see Naming a File.
 
K

Klido

вот бы кто пожертвовал готовую функцию преобразования :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
готовую ф-цию чего, ежели не отловить ошибку (при нажатии скрепки) - всё тщетно
ежели обсуждаем получение строки пути:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!