2014-11-06 105 views
1

我很困惑,因为没有在这个问题上找到答案。HTML文件上传接受和拒绝文件扩展名

问题:

我使用的HTML输入(type='file')选择文件附加到消息。但我想限制它只允许上传图片和文档。我知道有一个accept属性。但对于我所知道的,我们可以通过传递image/*来限制它接受图像。但我不认为文件有类似的限制。但是我可以添加我想允许的单个扩展。我也想完全拒绝扩展名为*.exe*.app的文件。

问题:

我的问题是,有没有类似的图像限制器我可能会丢失一个限制器。或者,如果我添加文件类型的单个扩展名,我想允许我将添加什么扩展名(请记住用户在Windows,Mac和Linux上使用此服务)。

注意:我试图不涉及js/jquery这个目的。

问候

+0

您可以手动添加适当文件的扩展名,即'.doc,.docx,.pdf,.txt'等 – Bijan 2014-11-06 23:22:21

+0

@Bijan这是我不确定在Mac,Windows中有多少种不同的组合文档类型和Linux – 2014-11-07 00:21:16

+0

'images/*'是所有浏览器/计算机可以打开的东西。但是'documents/*'不会有'',因为正如你所说的,不同的操作系统有完全不同的类型。只接受文件的基本标准文件类型 – Bijan 2014-11-07 00:25:03

回答

1

对于现代的浏览器,你可以在input元素上使用accept,你将不得不添加所有你能接受的文件和离开了你拒绝的人。仅仅使用HTML就可以做到这一点,但是如果你使用JavaScript,PHP等,很容易被拒绝。由于HTML不是一种编程语言,你可以做或不可以做的事情非常有限。

<input type="file" accept="[everything but .exe and .app]"> 

正如你所说,你将不得不在这里放置大量的文件。不幸的是,现在没有reject属性可以添加。

注意:为了支持浏览器,您将需要使用JavaScript或其他编程语言来检查文件的输入。否则,从我上面显示的是你所能做的仅仅是HTML。

我会建议只是压低并使用JavaScript来检查,这将是更容易的方式。

+0

旧的浏览器会发生什么?他们会允许吗? – Ave 2014-11-06 23:29:50

+1

@ardaozkal不,只有IE 10+和相对更新版本的Chrome,Firefox等我会添加 – 2014-11-06 23:30:47

+0

您错误地理解了这个问题,我想拒绝具有'.app'和'.exe'扩展名的文件,并且允许图像和文档 – 2014-11-07 00:19:54