murkalkiran Ответов: 2

Не удалось найти часть пути при загрузке файла


Я пытаюсь загрузить файл ppt, который я получаю ожидание, как
Could not find a part of the path 


"Could not find a part of the path 'C:\\Projects\\Workplace Select\\ISG.WorkPlaceSelectWeb\\ISG.SelectX\\Content\\Documents\\Service Provider Case Studies_Workplace Select\\Centurylink&Freightliner Dealer&Americas&North America&United States&Travel and Transportation&Transportation&Next-Gen ADM Services&Next-Gen ADM#C1#2020.pptx'."


я сомневаюсь, что последняя часть имени файла ." причина проблемы

код таков
string appPath = WebConfigurationManager.AppSettings["rootPath"].ToString();
              string templatePath = Server.MapPath(appPath + "Service Provider Case Studies_Workplace Select");

var physicalPath = Path.Combine(templatePath, FileName);
                            item.SaveAs(physicalPath);


Что я уже пробовал:

Не в состоянии понять, в чем же дело

Я могу загрузить еще один файл ppt с тем же кодом

Gerry Schmitz

Может быть, попробовать более короткое имя файла ... и без всяких специальных символов.

murkalkiran

Аксенчер&ампер;европейский газ &амп;&амп поставщик электроэнергии;Европе&энергии&коммунальные услуги&ампер;Некст-Ген АДМ&амп;Некст-Ген АДМ&амп;АМС#2020

это имя файла я могу загрузить без ошибок

Richard MacCutchan

Действительно ли эти символы двойной обратной косой черты находятся в том пути, который вы используете?

2 Ответов

Рейтинг:
14

CHill60

Путь к файлу слишком длинный. То Документация Microsoft[^] государственный

Цитата:
В выпусках Windows до Windows 10 версии 1607 максимальная длина пути-MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows для удаления ограничения требуется изменить раздел реестра или использовать средство групповой политики.
Ваше полное имя файла имеет длину 286 символов-независимо от того, использовали ли вы пробелы, амперсанды и подчеркивания.

Если вы используете Windows 10 или выше, вы можете изменить реестр, чтобы обойти это ограничение - см. Ограничение максимальной длины пути - Win32 apps | Microsoft Docs[^]

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

Через периоды (\ISG.SelectX\) и пробелов (\Service Provider Case Studies_Workplace Select\) в названиях папок обычно не считается хорошей практикой - это может быть легко неправильно понято - в первом случае это может быть ошибочно принято за файл называется ИСГ.SelectX и в последнем случае вы заставляете пользователя окружать имя двойными кавычками, если используете какие-либо инструкции cmd, такие как DIR

Также рассмотрите влияние наличия дерева папок глубиной в 7 слоев - вы можете подумать, что оно хорошо организовано, но не зашли ли вы слишком далеко с этой концепцией? Вы эффективно предотвратили любую миграцию в систему, основанную на URL - адресах (например, Sharepoint-не обязательно плохая вещь :смех:). Действительно ли это облегчает поиск вещей?

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


Рейтинг:
1

OriginalGriff

Если код может загружать некоторые файлы, то проверьте точный путь, который он предоставляет, и убедитесь, что каждая его часть доступна.
Откройте браузер на сервере и вставьте полный путь в адресную строку: что там написано? Попробуйте сделать то же самое с помощью Проводника Windows на сервере, но без имени файла.
Если он открывает файл, это, вероятно, проблема с разрешениями. Веб-сайты не работают под вашим идентификатором пользователя, поэтому, если полный путь не доступен всем пользователям, вы, вероятно, не сможете добраться до него из C#.