HTML上传表单中的文件类型

时间:2010-07-02 13:11:01

标签: html upload input progress file-type

如何限制我的表单只接受jpeg文件?现在它显示所有文件。

<input name="image" type="file" />

是否有任何javascript方法可以显示进度?

5 个答案:

答案 0 :(得分:3)

输入标记中有一个accept属性,但并非所有浏览器都支持。这是一个例子:

<input type="file" name="image" id="image" accept="image/jpeg" />

这可能是您的第一次检查,但在接受文件时,您的主检查必须在服务器上。

答案 1 :(得分:2)

  

如何限制我的表单只接受jpeg文件

大多数情况下,你不能。您必须检查服务器(无论如何 ,即使您可以在客户端进行检查;您可以从不信任客户端验证,任何事情) 。但事情正在改善。新的File API from the W3C即将推出,你可以在支持它的浏览器上使用它(目前主要是Firefox;它是Mozilla的一项举措),只是为了给那些现代人提供更好的用户体验浏览器。

修改Gert G points out这里的accept attribute可以提示浏览器,这对支持浏览器的浏览器来说很不错。

  

是否有任何javascript方法可以显示进度?

不直接,不。有时可以间接地显示进度,通过在上传时使用定时的一系列ajax请求并让服务器告诉你到目前为止收到了多少,但它充满了困难,可能不值得打扰。

这是文件API可以提供帮助的另一个领域,尽管您可能会发现在此过程中引入了相当多的延迟:基本上,您可以在本地读取一大块文件,通过ajax将其发送到服务器,更新进度,读取和发送下一个块等。

当然,像SWFUpload这样的Flash上​​传器会显示进度等等,如果你想使用专有的东西(但非常普遍)。 (Flash,我的意思是。)

答案 2 :(得分:1)

这不能在纯HTML / Javascript中完成,但有几个基于Flash的组件可以做到这一点 - 例如想到Uploadify

如果你能忍受这个限制,那就有很多问题(有很好的答案)here on SO

答案 3 :(得分:1)

没有纯HTML方式来显示某些文件类型,也没有简单的javascript方式。

我使用名为FancyUpload的包:http://digitarald.de/project/fancyupload/为我处理这部分。此外,它会按照您的要求显示下载进度条。

我应该提一下,我发布的上传器需要你包含一个名为MooTools的javascript框架。如果您更喜欢jQuery(例如uploadify)或其他框架,还有其他类似的上传器。

请确保您也检查服务器端。

答案 4 :(得分:1)

您可以使用<input name="image" type="file" accept="image/jpeg">来限制用户选择。但您仍需要检查服务器中的文件类型。

显然,如果不开始上传,您可能无法显示进度,因此您应该首先查找服务器端api,以便让客户端更新上载状态。至于javascirpt进度条,每个javascript库都有一个例如jquery progress bar