有没有人知道如何使用HTML5通过桌面拖放文件实现上传?我找到了以下参考资料:
-
Selecting files using drag and drop (2017-08)在developer.mozilla.org上
-
Drag and drop file uploading using JavaScript文章指出api已更改并链接到The File Api has changed (2010-09)
-
html5-drag-and-drop-multiple-file-upload (2017-11 returns 404) on http://www.appelsiini.net/(仍然有效)
但有没有可以在所有平台上运行的解决方案: Firefox , Chrome 和 Safari ?
非常感谢!
3 回答
对不起,目前还没有可用的跨浏览器解决方案 .
FF,Safari,Chrome,IE(跨浏览器问题)
没有递归文件夹上传 - 事实上,根本没有文件夹上传 . 虽然这不是一个显示停止,但如果浏览器也不会发送该文件夹中的所有文件,那么允许用户在文件上传输入框中选择文件夹似乎有点愚蠢 .
Firefox 3.6 . *
这个浏览器支持文件拖放,但实现很可能是有史以来最糟糕的 . 为了上传用户删除的文件,我们必须将整个文件读入内存,然后通过Ajax将其发送到我们的服务器 . 这适用于大约10MB的滴 . 如果您使用400MB文件尝试相同的操作,请忘记它!
Firefox 4. *(Beta)
Mozilla开发人员很快 - 他们意识到了之前实现的问题,并创建了一种实现拖放上传的全新方式 . FormData对象是一个新的JavaScript对象,它允许Web开发人员将文件上载直接插入到Ajax请求中,而无需先将文件读入内存 . 我对此非常兴奋,并迅速下载了Firefox 4,这是第二个测试版 . 在玩了不到5分钟之后,我强烈反对你不要尝试它 . 由于缺乏对Firebug的支持,我的系统变得非常不稳定和缓慢,并且开发是一个主要的痛苦 .
Chrome(最新)
这个浏览器是迄今为止最好的实现!简单明了,我唯一的抱怨是你不能通过拖放上传文件夹及其内容 .
Safari 4. *&5. *
由于Safari就像谷歌Chrome一样 Build 在WebKit之上,所以我预计它也可以正常运行 . 哇,我错了!我在Safari 4和Safari 5中都尝试过这种方法 . 在将多个文件拖放到窗口中时,Safari会多次发送第一个文件,而不是发送所有文件 . 谈论一个主要的错误 . 为了使它更有趣,如果用户点击放置位置,他们可以使用标准文件选择对话框选择要上载的多个文件 - 并且按预期工作!我等不及Safari来解决这个问题 .
Internet Explorer
说实话,我还没有打算尝试在Internet Explorer中拖放上传 . 由于缺乏良好的开发工具和不合规的JavaScript引擎,试图支持IE是一种痛苦 . 由于我无法让所有首选浏览器都能玩得很好,我无法想象Internet Explorer会更接近 .
source
我会挑衅地看看运行Plupload . 它允许出色的浏览器功能,并支持在支持FileReader的HTML5浏览器中拖放多个文件 .
所以,比方说,你没有html 5,它会弃用到flash / gears / silverlight,具体取决于个人安装的内容 .
这是兼容性图表:http://www.plupload.com/index.php
它有一个名为droparea的选项:“somediv”,允许您将文件拖入其中并自动提示文件上传 .
如果您需要任何帮助,请告诉我 .
这是一个简单的例子 . 如果将图像拖到红色div上,则会将图像附加到正文 . 我已经确认它适用于IE11,Chrome 38和Firefox 32.有关更详细的说明,请参阅此Html5Rocks文章 .