ITHit Ajax Browser проблема отмены загрузки, усеченный файл остался на сервере
Если пользователь отменяет загрузку в Ajax Browser, создается впечатление, что на сервере остается частичный файл. Я ожидаю, что частично загруженные файлы будут удалены. Есть ли этому решение? или есть возможность убрать опцию отмены в интерфейсе?
1 ответ
Да, вы можете удалить пункт Отмена из контекстного меню панели загрузки. Пожалуйста, используйте следующий код:
ITHit.Events.AddListener(ajaxFileBrowser.GetMenuManager(), 'OnShowMenu', onShowMenu);
...
function onShowMenu(menu, aContextMenuHierarchyItems) {
if (menu.Id == 'UploadProgressPanelMenu'){
var index = getMenuIndexByMenuId(menu, 'CancelUpload');
if (index != -1) {
menu.Children.splice(index, 1);
}
}
}
function getMenuIndexByMenuId(menu, menuId) {
for (var i = 0, l = menu.Children.length; i < l; i++) {
if (menu.Children[i].Id == menuId) {
return i;
}
}
return -1;
}
Здесь вы можете найти больше информации о настройке меню. Идентификаторы контекстного меню (например, "CancelUpload" в приведенном выше примере) расположены в ITHitAJAXFileBrowser.js, их можно легко найти среди блока фраз, эта часть кода не сокращена. Идентификаторы меню верхнего уровня (например, "UploadProgressPanelMenu") перечислены здесь в описании объекта меню.
Если вы используете IT Hit WebDAV Server Engine на стороне сервера, вы можете удалить файл в реализации IResumableUpload.CancelUpload. Обратите внимание, что как только команда отмены загрузки станет асинхронной, загрузка может продолжиться, и ваш файл может быть заблокирован в вашем хранилище.
Поскольку отмена загрузки является асинхронной, это является причиной того, что Ajax File Browser не может удалить файл непосредственно во время отмены загрузки. Файл в большинстве случаев блокируется на стороне сервера при загрузке.