Как отличить файл от папки при загрузке с помощью перетаскивания в jquery? - PullRequest
8 голосов
/ 21 февраля 2012

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

Один из способов, который я подумал, это проверить свойство типа файла jQuery. Предположим, что имя файла «test.txt», тогда тип файла вернет «text / plain». Для обычного имени папки, такого как «TestFolder», тип файла будет пустым, а размер файла будет равен 0. Однако если имя папки включает расширение, например «TestFolder.txt», то тип файла будет возвращать «text / plain».

Таким образом, я мог проверить тип файла и размер файла, но он не будет работать правильно для имени папки, например «TestFolder.txt». Может ли кто-нибудь предложить мне хорошее решение, чтобы исправить это, используя jQuery или другие методы?

Ответы [ 3 ]

3 голосов
/ 27 марта 2013

Возможность определить, была ли удалена папка, зависит от поддержки агентом пользователя Файловой системы API .Если пользовательский агент поддерживает API файловой системы (в настоящее время только Chrome 21+), вы можете использовать интерфейс Entry, который имеет два дочерних интерфейса: DirectoryEntry и FileEntry.Сам интерфейс имеет функции isDirectory и isFile.Без поддержки этого интерфейса невозможно определить, являются ли отброшенные элементы папками при проверке объекта DataTransfer.

0 голосов
/ 27 ноября 2014

Поскольку вы не собираетесь разрешать перетаскивание папки, сначала проверьте, является ли она папкой или файлом, во-вторых, только если это не папка, затем проверьте расширение файла. Но IE <11 не поддерживает файловый API для обработки. Надеюсь, это поможет. </p>

0 голосов
/ 27 марта 2013

Насколько мне известно, браузер (и, по сути, javascript) не имеет доступа ни к каким методологиям доступа к файлам в целях безопасности, поэтому вы не можете проверить, что это за файл на самом деле.

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

Я был бы рад сам увидеть лучшие альтернативы.

...