2011-09-05 44 views
4

我正在制作一个用于识别某些文件类型的在线工具。我需要从文件头中访问一些字节值来执行此操作。如何从网页读取客户端文件头?

用户选择客户机上的文件。不知何故,我需要从文件中获取关键字节值,然后在服务器端数据库中查找这些值以对文件进行分类。

如何从客户端文件读取字节?

我知道我可以让用户上传文件到服务器,但是这些文件非常大,而且我只需要几个字节,所以上传整个文件会很慢并且很浪费。

我可以以某种方式上传文件的一部分?看起来很难取消HTML表单上传,取消后文件部分不可用。它是否正确?

是否有可能在javascript中读取文件?我用google搜索了这个,但答案不清楚。我已经读过,它可能与一个Java小程序,但只有当小程序被签名。

还有其他的方法吗?

回答

3

您可以使用html5,但需要在旧版浏览器上使用Flash或其他非JavaScript方法备份。

http://www.html5rocks.com/en/tutorials/file/dndfiles/

+0

谢谢卡尔。有什么浏览器支持这个列表吗? – Sugrue

+0

我会推荐Flash,大多数用户安装它,远远超过HTML5 File API。虽然你可以,如果你只想让Flash将它发回给Javascript,并且每当有可用时都使用Flash/HTML5。 – Andreas

+0

好的链接:http://www.thebuzzmedia.com/html5-drag-and-drop-and-file-api-tutorial/ – Sugrue

1

所以,如上所述,您必须使用非JavaScript的方法。但是这些方法中的每一个都有一些减号。 FLASH - 与代理服务器不兼容。特别糟糕。当然,你可以使用flash来获取文件的base64代码并将其提供给js。在这种情况下,这将是工作的重点。 Java Applet - greate工作但不是很多用户拥有JVM或JVM版本可能不是sasme(但是如果您将使用JDK1.4或1.5,则不成问题)。 ActiveX - 仅在IE和Windows上工作 HTML5文件Api - 不是跨浏览器的解决方案。只会在最后一个浏览器上工作,而不是全部。

当然更好的使用服务器端 - 以php为例,getmimetype等功能。

但我可以手动更改我的文件的标题。例如,我可以从jpeg或png添加到php文件头中 - 并且您的脚本会被认为是图像。

所以这是不好的解决方案:使用标题。对于检查文件类型可能简单地使用信任文件的MIME类型的用户和通过文件扩展名生成图标

+0

感谢您的回复。我的文件是视频,因此大小在10MB-1GB的范围内。除非我可以上传第一个1kb(标题),否则上传到serverside不是一个选项。任何方式只上传文件的一部分? – Sugrue

相关问题