如何在使用jquery中的拖放进行上传时区分文件和文件夹?

时间:2012-02-21 14:54:36

标签: javascript jquery file-upload drag-and-drop

如果用户尝试将文件夹拖放到我的文件上传器控件以进行上传,那么我需要向用户显示一条错误消息,说明只能上传文件。问题是我无法将文件与文件夹区分开来。

我认为的一种方法是检查jQuery的文件类型属性。假设文件名是“test.txt”,那么文件类型将返回“text / plain”。对于普通文件夹名称,例如“TestFolder”,文件类型将为空,其文件大小将返回0.但是,如果文件夹名称包含类似“TestFolder.txt”的扩展名,则文件类型将返回“text / plain”。

所以我可以检查文件类型和文件大小但是对于像“TestFolder.txt”这样的文件夹名称它无法正常工作。任何人都可以建议我使用jQuery或其他方法解决这个问题的好方法吗?

3 个答案:

答案 0 :(得分:3)

确定文件夹是否已被删除的能力取决于用户代理对Filesystem API的支持。如果用户代理支持Filesystem API(目前仅支持Chrome 21+),则可以使用Entry接口,该接口有两个子接口:DirectoryEntryFileEntry。界面本身具有isDirectoryisFile功能。如果不支持此接口,则在检查DataTransfer对象时无法确定删除的项是否为文件夹。

答案 1 :(得分:0)

由于您不打算允许文件夹拖放,首先检查它是否是文件夹或文件,仅次于它不是文件夹,然后检查文件扩展名。但IE< 11不支持文件API来处理。希望它有所帮助。

答案 2 :(得分:-1)

据我所知,浏览器(以及javascript本身)出于安全考虑,无法访问任何文件访问方法,因此您无法检查文件的实际内容。

我过去一直在处理这个问题,而且我发现最好的选择是处理文件服务器端,并在上传完成后将错误返回到页面。

我很高兴看到自己有更好的选择。