Jquery 如何限制文件格式?
下面我有一个jquery代码,其中包括一个文本框,用户可以在其中选择文件:Jquery 如何限制文件格式?,jquery,Jquery,下面我有一个jquery代码,其中包括一个文本框,用户可以在其中选择文件: var $imagefile = $('<input />') .attr({ type: 'file', name: 'imageFile', id: 'imageFile' }); var$imagefile=$(“”) 艾特先生({ 键入:“文件”, 名称:'imageFile', id:'imageFile' }); 我的问题是,如何
var $imagefile = $('<input />')
.attr({
type: 'file',
name: 'imageFile',
id: 'imageFile'
});
var$imagefile=$(“”)
艾特先生({
键入:“文件”,
名称:'imageFile',
id:'imageFile'
});
我的问题是,如何获得它,从而限制用户选择jpeg、gif或png文件?我希望用户浏览一个文件,然后单击提交按钮。如果文件类型正确,则显示确认消息,否则显示警报,说明“为图像选择了错误的文件格式”
下面是validation(),其中显示警报:
function validation() {
var marks = parseInt($("#total-weight").text());
var _qid = "";
var _msg = "";
var maxQuestions = <?php echo (int)@$_POST['textQuestion']; ?>;
var questionsAdded = $('tr.optionAndAnswer').length;
var alertValidation = "";
// Note, this is just so it's declared...
$("tr.optionAndAnswer").each(function() {
_qid = $("td.qid",this).text();
_msg = "You have errors on Question Number: " + _qid + "\n";
$(".textAreaQuestion",this).each(function() {
if (!this.value || this.value.length < 5) {
alertValidation += "\n\u2022 You have not entered a valid Question\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
$(".txtWeightRow",this).each(function() {
if (!this.value) {
alertValidation += "\n\u2022 Please enter in a figure for Number of Marks for this Question\n";
}
if (alertValidation != "") {
return false; //Stop the each loop
}
});
if(alertValidation != ""){
return false;
}
});
函数验证(){
var marks=parseInt($(“#总重量”).text();
var_qid=“”;
var_msg=“”;
var maxQuestions=;
var questionsAdded=$('tr.optionandswer')。长度;
var alertValidation=“”;
//请注意,这只是它的声明。。。
$(“tr.optionandswer”)。每个(函数(){
_qid=$(“td.qid”,this.text();
_msg=“您在问题编号上有错误:”+\u qid+“\n”;
$(“.textAreaQuestion”,this).each(函数(){
如果(!this.value | | this.value.length<5){
alertValidation+=“\n\u2022您没有输入有效的问题\n”;
}
如果(alertValidation!=“”){
返回false;//停止每个循环
}
});
$(“.txtWeightRow”,this).each(函数(){
如果(!this.value){
alertValidation+=“\n\u2022请输入此问题的分数数字\n”;
}
如果(alertValidation!=“”){
返回false;//停止每个循环
}
});
如果(alertValidation!=“”){
返回false;
}
});
您需要将属性accept=“image/*”
添加到您的input
标记中,如下所示
var $imagefile = $('<input />')
.attr({
type: 'file',
name: 'imageFile',
id: 'imageFile',
accept: 'image/*'
});
var$imagefile=$(“”)
艾特先生({
键入:“文件”,
名称:'imageFile',
id:'imageFile',
接受:'image/*'
});
您应该在服务器端再次检查是否上载了正确类型的内容。不要只信任客户端验证
更多信息自从1995年推出以来,
早就有了一个accept
属性,在这里你可以列出你想要接受的MIME类型,例如accept=“image/*”
。不过,直到最近浏览器才开始支持它。现在,Opera 11、Chrome 16、Firefox 9都没有
无法回忆使用accept
是否确实过滤了“文件选择”对话框中列出的文件,或者仅在用户选择后限制接受的文件。可能因浏览器和操作系统而异
但是可以,您可以在选择文件后检查文件扩展名。例如(未测试):
var allowedTypes=[“jpg”、“jpeg”、“gif”、“png”];
var path=$imagefile.val();
var ext=path.substring(path.lastIndexOf('.')+1.toLowerCase();
如果($.inArray(ext,allowedTypes)<0){
alertValidation+='\n\u2022不支持的文件类型';
}
在任何情况下,您都希望验证服务器上的文件类型,而不是依赖客户端来确保它们是正确的类型。将所选文件名与正则表达式模式匹配,如(+++.jpg$\.+\.png$.+\.gif$.+\.jpg$)如果匹配,请通知usr重新选择您不应该在创建元素后更改元素的
类型
属性,即会给您带来问题。我也接受:iamge/png | | | iamge/jpg | | iamge/gif
?为什么它前面需要“image”这个词?是否有办法在服务器端检查它,以便在我单击提交按钮时检查它在服务器端进行检查,如果提交很好,否则会显示警报?如果您希望它限制为这三种图像类型,可以-除了它是image/jpeg
,而不是image/jpg
。它使用的方案是一个MIME类型列表-正如您可能从text/html
、text/javascript
或text/css
中知道的那样。我会做出决定这里有一个罕见的例外,请参考维基百科。我在W3schools中找到了一个例子并制作了这个应用程序,你能帮我做这个吗?有没有办法在页面上显示警报,但仍然进行服务器端检查,而不是进入显示flle服务器端详细信息的新页面?有没有办法检查服务器端,以便当我点击提交按钮时,它会在服务器端进行检查,如果提交很好,否则会显示警报?您必须将文件上载到服务器,以便服务器进行检查,然后如果发布了无效的文件类型,则让服务器发回错误消息。客户端验证只是为了方便用户(不会让他不得不上传服务器永远不会接受的文件),但恶意用户可以轻易地欺骗任何客户端检查。我在W3schools中找到了一个示例,并制作了该应用程序,你能帮我做到这一点吗,有没有一种方法可以让它在页面上显示警报,但仍然执行服务器端检查,而不是进入显示flle服务器端详细信息的新页面?请参阅编辑后的答案。只有一个示例,prob到目前为止,Bly并没有完全遵循您的代码。
var allowedTypes = ["jpg", "jpeg", "gif", "png"];
var path = $imagefile.val();
var ext = path.substring(path.lastIndexOf('.') + 1).toLowerCase();
if ($.inArray(ext, allowedTypes) < 0) {
alertValidation += '\n\u2022 Unsupported file type';
}