SharePoint Alfresco PHP MySQL
О сайте Контакты
пятница, 9 октября 2015 г.

Ошибка при попытке вложить файл в список SharePoint

В SharePoint 2013 обнаружилась странная ошибка: при попытке вложить файл к элементу списка появляется сообщение о недопустимых символах. Причем раньше такого не было, и началось относительно недавно. Видимо, накатился какой-то непротестированный апдейт.

Сообщение об ошибке выглядит так:

Имена файлов не могут содержать следующие знаки: & " ? < > # {} % ~ / \.

За вызов сохранения аттача по нажатию кнопки Ok отвечает JS-функция OkAttach(), которую можно найти в файле form.debug.js. В ней в самом начале объявляется переменная filename, в которой хранится имя загружаемого файла. Далее оно проверяется на содержание всяких недопустимых символов, и если их нет - идет сохранение.

Однако, ошибка происходит, даже если вложить файл с максимально корректным именем. В чем же дело? А дело в том, что в переменную filename почему-то попадает не имя файла, а весь путь временного файла. Естественно, в этом пути есть и слеши, и двоеточие, которые кажутся SharePoint вредными и он их не пропускает.

Решение очевидно. Надо дописать JS-функцию так, чтобы в обработку брался не путь, а действительно имя файла:

var filename = TrimWhiteSpaces(fileInput.value);
 
// Здесь был путь, а не имя файла. Берем имя файла.
filename = filename.replace(/^.*[\\\/]/, '');

Также надо не забыть поправить файл form.js, он минимизирован, но сделать это не сложно. Оба файла лежат в следующей папке на сервере SharePoint:

C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\

Главное, отслеживать и документировать свои правки, потому что при очередном апдейте они могут затереться.

Sergey Lysenko, пятница, 9 октября 2015 г.

Комментарии: