SharePoint. Drag-and-Drop Загрузчик файлов
В SharePoint существует нативный клиентский контрол, который позволяет загружать файлы в библиотеку документов с помощью drag'n'drop.
Поддерживаемые версии SharePoint
Этот функционал был выпущен вместе с SharePoint 2013 и с тех пор не менялся. Т.е. он работает во всех версиях SharePoint, начиная с 2013, в том числе и с SharePoint Online.
HTML
Для инициализации этого клиентского контрола необходимо предоставить HTML-элемент, который будет являться дроп зоной для документов.
Что-то вроде этого будет вполне достаточно:
<div id="dragzone">
Перетащите свои файлы сюда.
</div>
В моём примере я добавил стили, чтобы сделать эту зону крупнее и с границей:
<style>
#dragzone{
width: 100%;
height: 400px;
border: 1px solid #dedede;
}
</style>
Настройка
Клиентский контрол имеет следующие параметры:
- dropTargetElement - HTML элемент, о котором сказано выше;
- serverUrl - URL-адрес сервера, можно передать просто "/" (но не всегда);
- siteRelativeUrl - URL-адрес коллекции сайтов относительно сервера. это значение можно получить из свойства _spPageContextInfo.siteServerRelativeUrl;
- listName - ID библиотеки документов. Именно Guid, а не название;
- rootFolder - путь к папке, в которую необходимо загрузить файлы. Если значение равно "", то файлы будут загружены в корневую папку библиотеки;
- overwriteAll - Если true - файлы будут перезаписаны, если таковые уже имеются;
- hideProgressBar - Если true - индикатор загрузки будет скрыт;
- refreshFunction - JavaScript функция для обработки изменения состояния загрузчика;
- preUploadFunction - функция, вызываемая перед началом загрузки;
- postUploadFunction - функция, вызываемая после окончания загрузки;
- checkPermissionFunction - функция, вызываемая перед вызовом функции preUploadFunction;
checkPermissionFunction
Эта функция используется для валидации перед загрузкой. Если она определена и НЕ возвращает true - загрузка не будет инициализирована. Если валидация не нужна - просто не указывайте этот параметр.
Обработчики событий
Все остальные функции (refreshFunction, preUploadFunction, postUploadFunction) принимают единственный аргумент типа FileElement[].
Класс FileElement:
Свойство status может быть равно одному из следующих значений:
- -1 - INVALID
- 0 - PENDING
- 1 - SKIP
- 2 - READING
- 3 - READ
- 4 - UPLOADING
- 5 - UPLOADED
- 6 - FAILED
- 7 - WARNING
Подготовка
Клиентский drag'n'drop загрузчик определен в файле DragDrop.js, расположенном в SharePoint Hive. Для его использования необходимо загрузить этот js-файл:
Всё готово. Осталось только вызвать метод registerDragUpload и передать в него параметры.
JavaScript
Следующий JavaScript код инициализирует загрузчик:
Результат
Для тестирования Вы можетедобавить следующий сниппет на страницу SharePoint on-premise/online:
И результат: