2010-09-14 108 views
4

我有一个关于文件上传的问题,我需要限制文件类型,但我喜欢在“文件上传”窗口中进行,因此用户无法甚至看到不允许上传的文件,我喜欢用js或jquery来做。文件上传 - 在“文件上传”窗口中限制文件类型

我知道这是可能的,例如,uploadify插件做到这一点,但我不想使用它的原因有很多。

+0

这不能在Javascript,期间完成。您最好的选择是在上传之前过滤掉无效的扩展程序,但出于安全目的,浏览器不会让您混淆文件选择窗口。 – NullUserException 2010-09-14 22:13:47

回答

2

试试这个链接。它应该给你你需要的东西。它只是使用直接的JavaScript,我不认为这有任何JQuery选项呢。

http://www.codestore.net/store.nsf/unid/DOMM-4Q8H9E

<script type="text/JavaScript"> 
<!-- Begin 
function TestFileType(fileName, fileTypes) { 
if (!fileName) return; 

dots = fileName.split(".") 
//get the part AFTER the LAST period. 
fileType = "." + dots[dots.length-1]; 

return (fileTypes.join(".").indexOf(fileType) != -1) ? 
alert('That file is OK!') : 
alert("Please only upload files that end in types: \n\n" + (fileTypes.join(" .")) + "\n\nPlease select a new file and try again."); 
} 
// --> 
</script> 

我已经更新了这个答案从发布链接的实际代码。正如海报所指出的,这不是解决这个问题的“安全”解决方案。由于这是客户端JavaScript,因此可以使用Web开发工具轻松更改文件的扩展名。始终检查服务器端上传的文件以防止恶意文件上传。

+1

请把你的代码方向放在你的答案中。 – Blazemonger 2013-12-17 19:01:43

0

按我的知识,我们可以做到这一点,如下图所示,但仍是对话中包含的所有文件类型:

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

但是,你可以使用jQuery/JavaScript的限制错误类型的文件上传,通过检查扩展名将文件发送到服务器之前猜测。