Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.61/345: Рейтинг темы: голосов - 345, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
1

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

18.01.2010, 16:56. Просмотров 64462. Ответов 37
Метки нет (Все метки)

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

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


Создал не в программировании по ошибке :welcome: Как-то самому перенести можно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2010, 16:56
Ответы с готовыми решениями:

Длинные пути к файла
Задача такова, нужно по определенному пути получить StorageFile использую метод await...

Декодирование имени файла вложения, отправленного по почте
Всем привет. Получаю почту по протоколу IMAP. Извлекаю вложения, анализирую структуру письма и...

Макрос Outlook для сохранения вложения в папку по частичному совпадению имени файла
Всем добрый день! Каждый день приходит в одном письме множество файлов. Есть ли макрос который...

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

37
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
18.01.2010, 17:58 2
по теме: глючило добавление аттача лотусскриптом, когда в имени файла 2 или более !, пробелы и точки вроде как не мешали.
за ограничение по длине пути - смотрела, точно не помню, что в итоге вышло - может быть, ошибка скорее операционки, чем лотуса.
как файл аттачится - в уи на собаках?

P.S.


Цитата Сообщение от Klido
Создал не в программировании по ошибке sad.gif Как-то самому перенести можно?
нет, нужны права модератора раздела форума.
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
18.01.2010, 18:16 3
Цитата Сообщение от OKEN
ак файл аттачится - в уи на собаках?
простой способ - скрепка на рт-лайт поле типа аттачмент - сообщение "Файл не найден" или "Путь недоступен"
скриптом в бэкграунде по хотспоту - ошибка 4225...

что прикольно - из предыдущих моих тем про показ аттачей повторно внизу документа - вот тут внизу аттачи добавляются! :welcome: рт-поля пустые после ошибки, но вложения в документе есть и видны внизу документа ;)
0
0 / 0 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
18.01.2010, 18:33 4
Цитата Сообщение от Klido
что прикольно - из предыдущих моих тем про показ аттачей повторно внизу документа - вот тут внизу аттачи добавляются! :welcome: рт-поля пустые после ошибки, но вложения в документе есть и видны внизу документа ;)
Может РТ-поле в подформе?

Name oldName As newName - переименовывает файл/дирректорию (может не быть нужного доступа).
FileCopy - копирование файла.
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
18.01.2010, 18:36 5
Цитата Сообщение от Klido
простой способ - скрепка на рт-лайт поле типа аттачмент - сообщение "Файл не найден" или "Путь недоступен"
с рт-лайтом с точками и пробелами в пути и имени файла с сетевого диска работает на лн7 замечательно :welcome:
посмотри в сторону ограничения на длину пути...
кстати, сколько хоть там в итоге путь получился, интересно?

внизу документа аттачи обычно, когда лотус сам аттач переименовывает. Это либо при дублировании имени, либо при наличии каких-то спецсимволов (вот у меня такое воспроизводилось с "!!" - в имя аттача писалось то, что было справа от этих символов.
по ходу - еще запятую проверь, с ней багов не помню, но чего-то проверки на нее видела)
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
18.01.2010, 18:53 6
Цитата Сообщение от VladSh
FileCopy - копирование файла.
+1

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



Цитата Сообщение от OKEN
глючило добавление аттача лотусскриптом, когда в имени файла 2 или более !
ага, имя пропадает, если не ошибаюсь
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
19.01.2010, 09:12 7
Цитата Сообщение от Akupaka
нотесовыый диалог не хавает больше 255 символов
тогда как получить имя файла, если не из диалога выбора? FileCopy над чем осуществлять?
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
19.01.2010, 09:25 8
Цитата Сообщение от Klido
тогда как получить имя файла, если не из диалога выбора? FileCopy над чем осуществлять?
оу... протупил )))
вроде, метод, который аттачит хавает длинные пути, а сам диалог - нет, FileCopy там в общем и не нужен, получается... давно это было...
а как же мы делали? может, забили? я уже и не помню...
кто там помнит как системный диалог выбора файла показать АПИшками?
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
19.01.2010, 09:30 9
имя файла в OpenFileDialog режется?
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
19.01.2010, 09:31 10
Цитата Сообщение от Akupaka
оу... протупил )))
вроде, метод, который аттачит хавает длинные пути, а сам диалог - нет, FileCopy там в общем и не нужен, получается... давно это было...
а как же мы делали? может, забили? я уже и не помню...
кто там помнит как системный диалог выбора файла показать АПИшками?
Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ. Думаю, построить пользователей будет проще, чем написать свой диалог выбора файла с "неограниченной" длиной пути. По крайней мере объяснение, что это ограничение ОС, а не Лотуса должно их удовлетворить.

Добавлено
Можно рт-лайтную скрепку заменить хотспотом с ЛС-кодом, отлавливать вышеуказанную ошибку и выводить своё сообщение об ошибке с настоятельной рекомендацией переместить/переименовать файл.
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
19.01.2010, 09:39 11
Цитата Сообщение от Akupaka
а как же мы делали? может, забили? я уже и не помню..
в своё время именно забили :what?: вот думал полегчало с ростом винды и лотуса в версиях, ан нет....



Цитата Сообщение от nvy
построить пользователей будет проще
никак нет :( террабайты файлов на файловом сервере, накопленные за годы работы... это не пройдёт :(
в фоне копировать файло в тмр и потом аттачить - единственный, пожалуй, выход...
но...


Цитата Сообщение от nvy
Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
19.01.2010, 09:45 12
Цитата Сообщение от Klido
в своё время именно забили :what?: вот думал полегчало с ростом винды и лотуса в версиях, ан нет....


никак нет :( террабайты файлов на файловом сервере, накопленные за годы работы... это не пройдёт :(
в фоне копировать файло в тмр и потом аттачить - единственный, пожалуй, выход...
но...
Как вариант (хреновый) — наиболее востребованную глубоко зарытую папку сделать сетевым ресурсом — путь подсократится
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
19.01.2010, 10:47 13
Цитата Сообщение от nvy
Что-то мне подсказывает, что Лотус как раз и вызывает системный диалог выбора файла через АПИ
в том-то и дело, что лотус из него забирает только 255 символов, на сколько помню, но апишный диалог позволяет и больше...
0
0 / 0 / 0
Регистрация: 16.08.2009
Сообщений: 100
19.01.2010, 10:57 14
Цитата Сообщение от Akupaka
апишный диалог позволяет и больше...
ЭЭ.. Как бе нет.. В Винде макс длина пути 256. Ограничено в API.
Ссылка 1. Простая.
<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 символа -012345678901234567890123456789012345678901234567890123456789 01234567890123456789
012345678901234567890123456789012345678901234567890123456789 01234567890123456789
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 будет увеличиваться пропорционально увеличению возможностей файловой системы ОС.
Ссылку в мсдн искать лень..
0
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
19.01.2010, 11:47 15
ну это про путь полный.. сейчас изучаю что есть в файлах - там в именах и запятые, и точки, и иные символы... всё больше чувствую, что именно в символах дело, осталось понять что гарантированно не нравится....
0
0 / 0 / 0
Регистрация: 04.10.2007
Сообщений: 2,977
19.01.2010, 13:07 16
Цитата Сообщение от vital
ЭЭ.. Как бе нет.. В Винде макс длина пути 256. Ограничено в API.
а, таки да... а может у меня проблема была только из-за кириллических символов? все забыл... ((
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
19.01.2010, 13:16 17
не знаю - можноли перехватить ошибку в форме, не пробовал
ежели можно - переключить на свой выбор (нативный ДБ)
0
Tyo
19.01.2010, 18:30 18
Цитата Сообщение от vital
сылку в мсдн искать лень..
Зря. "Проводник" же нормально работает с длинными путями.

In the ANSI version of thys function, the name is limited to MAX_PATH characters. To extend thys 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.
0 / 0 / 0
Регистрация: 28.06.2009
Сообщений: 1,567
19.01.2010, 18:36 19
вот бы кто пожертвовал готовую функцию преобразования
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
19.01.2010, 19:54 20
готовую ф-цию чего, ежели не отловить ошибку (при нажатии скрепки) - всё тщетно
ежели обсуждаем получение строки пути:
http://www.lotusgeek.com/LotusGeekBlog.nsf...nks/ROLR-6KGKV4
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2010, 19:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Извлечение имени файла и пути из строки
Доброго времени суток!!! Есть строка - полный путь к файлу. Как извлечь из этой строки путь и имя...

Кирилица и пробелы в пути и имени файла. GET запрос
Добрый день! У меня есть локальный сайт denwer (apache) +Joomla. PHP Version 5.3.13 - мне...

Склеивание имени файла и пути к его папке
Всем привет. Где-то видел название стандартного метода, который принимает два параметра - путь к...

Создание текстового файла с указанием имени и пути
Всё описание в заголовке, ПАМАГИТИ


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.