拖放文件上传可以在Firefox 3.6中完成 .
A Google search for html5 drag-and-drop file uploading -gmail给出了类似的东西:
所有这些指南都使用 FileReader
(或Firefox 3.6不推荐使用 getAsBinary
,这也没有其他浏览器支持) .
但是,Google最近发布了Gmail更新,允许在Chromium以及Firefox和Chromium does not have FileReader上传文件上传 . 我每晚都在使用最新的Chromium,它可以拖放上传文件,但不支持 FileReader
.
我见过有人提到可以通过拖动到 <input type="file" />
来实现拖放上传,但是一次只能支持一个文件,而Gmail 's uploader can handle multiple files being dragged onto it, so that'显然不是他们正在做的事情 .
所以问题是,他们是如何做到的?你如何支持Chromium进行HTML5文件上传?另外,你能支持Safari吗?
9 回答
警告: This is compatibility code for very old versions of Safari and Chrome. 现代浏览器都支持FileReader API;这是一个教程:https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications
此代码现在仅在由于某种原因您需要支持Safari 5及更早版本或Chrome 6及更早版本时才有用 .
一种可能是使用the method used in SwellJS:
像这样使用
<input type="file" multiple="multiple" />
:输入元素可以设置为具有
opacity: 0
并且(绝对地)定位在接受上载的元素上 . 整个表单可以放在iframe
中,用于"pseudo-Ajax"之类的行为 . 并且上传元素可以是隐藏的图层,直到将某些内容拖过它 .这样的iframe看起来像:
这应该仅在检测到Safari或Chrome时执行(因为其他浏览器不支持拖放到
<input type="file" />
元素上),并且可以与Firefox 3.6的HTML5drop
事件结合使用 .我不知道这是否是Gmail使用的方法,但它肯定也有效 .
您可能对更符合技术和浏览器的内容感兴趣 .
在我看来Plupload做得很好,支持以下功能:
Chunking
Drag/Drop
PNG调整大小
JPEG调整大小
类型过滤
流上传
分段上传
文件大小限制
上传进度
对于以下大多数技术:
Flash
齿轮
HTML 5
Silverlight
BrowserPlus
是的,since 2010.05.27,它支持在Chrome测试版上运行HTML5的拖放功能 .
经过很多很多 Sleuth 工作之后,我在Chrome上工作了一些东西 . 这仅适用于Chrome . 在Safari上,它冻结了 . 在Firefox上,它不会让我删除该文件 . IE会打开删除的文件 . 即使在Chrome中,拖放只能运行一次,出于某种原因,之后您必须刷新页面 . (可能的原因是事件处理程序出了问题 . )
handler.php:
您不需要使用iframe来执行伪ajax上传 . Chrome和Safari都支持带有进度事件的XHR2 uploads,因此您可以执行进度条等 .
对于我们自己的应用程序,我们只对FireFox进行拖放操作 . 我们恢复为其他人传统的iframe上传 . 为了检测支持拖放,我们运行以下代码:
希望这对一些人有帮助 .
你可以使用html5uploader库:http://code.google.com/p/html5uploader/
它适用于Firefox,Safari和Chrome .
最新的浏览器支持文件上传得很好 . 你可以使用:
你不需要设置边界或任何头部,就像这样工作正常 . 我在客户端测试了这段代码:firefox 6.02和chrome 13. server:tomcat with“spring mvc”
您可以使用FormData存储文件,然后上传它 . 例如
这个演示在这里(http://flexinnerp.appspot.com/)只是享受它:)
设置多个属性,如:
input type =“file”name =“file1”multiple =“multiple”class =“DropHere”
并使用此CSS DropHere类:
文件字段现在看起来像:
如果您使用asp.net,您可能也喜欢这篇文章我写的"Multiple file upload with progress bar and drag and drop":http://www.codeproject.com/Articles/818561/Multiple-file-upload-with-progress-bar-and-drag-an