我希望使用jQuery来限制文件上传字段只能上传jpg/jpeg,png和gif格式的文件。我已经在后端使用PHP
进行了检查。我已经通过一个JavaScript
函数运行了提交按钮,所以我只需要知道如何在提交之前检查文件类型或弹出警告。
我希望使用jQuery来限制文件上传字段只能上传jpg/jpeg,png和gif格式的文件。我已经在后端使用PHP
进行了检查。我已经通过一个JavaScript
函数运行了提交按钮,所以我只需要知道如何在提交之前检查文件类型或弹出警告。
您可以像获取其他字段一样获取文件字段的值。但是,您不能更改它。
因此,为了表面上检查文件是否具有正确的扩展名,您可以这样做:
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
只针对这个任务不需要插件。从其他几个脚本中把它拼凑在一起:
$('INPUT[type="file"]').change(function () {
var ext = this.value.match(/\.(.+)$/)[1];
switch (ext) {
case 'jpg':
case 'jpeg':
case 'png':
case 'gif':
$('#uploadButton').attr('disabled', false);
break;
default:
alert('This is not an allowed file type.');
this.value = '';
}
});
这里的技巧是在选择有效的文件类型之前,将上传按钮设置为不可用状态。
如果您正在使用文件字段,则前端放置“accept”属性非常方便。
示例:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
几个重要的注意事项:
<input type="file" id="userfile" accept="image/*|video/*" required />
在我的情况下,我使用了以下代码:
if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(fileName)) {
alert('You must select an image file only');
}
我尝试编写可运行的代码示例,测试后一切都正常。
这是代码:
HTML:
<input type="file" class="attachment_input" name="file" onchange="checkFileSize(this, @Model.MaxSize.ToString(),@Html.Raw(Json.Encode(Model.FileExtensionsList)))" />
Javascript:
//function for check attachment size and extention match
function checkFileSize(element, maxSize, extentionsArray) {
var val = $(element).val(); //get file value
var ext = val.substring(val.lastIndexOf('.') + 1).toLowerCase(); // get file extention
if ($.inArray(ext, extentionsArray) == -1) {
alert('false extension!');
}
var fileSize = ($(element)[0].files[0].size / 1024 / 1024); //size in MB
if (fileSize > maxSize) {
alert("Large file");// if Maxsize from Model > real file size alert this
}
}
$('#ff2').change(
function () {
var fileExtension = ['jpeg', 'jpg', 'pdf'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.jpeg','.jpg','.pdf' formats are allowed.");
return false; }
});
var files = $('#file1')[0].files;
var len = $('#file1').get(0).files.length;
for (var i = 0; i < len; i++) {
f = files[i];
var ext = f.name.split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'png', 'jpg', 'jpeg']) == -1) {
alert('invalid extension!');
}
}
<input type="file" class="form-control" id="FileUpload1" accept="image/png" />
$('#FileUpload1').change(
function () {
var fileExtension = ['png'];
if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
alert("Only '.png' format is allowed.");
this.value = ''; // Clean field
return false;
}
});
$("#my_upload_form").bind("submit", function() { // 上面的检查 });
- 321X$('#file_field').change(function(){// above check});
。 - makki$("#my_upload_form").bind("submit", function() { // above check });
现在应该使用$("#my_upload_form").submit(function() { // above check });
进行绑定,详情请见 http://api.jquery.com/submit/。你也可以使用$("#my_upload_form").submit(function(e) { // above check e.preventDefault(); });
阻止表单提交。 - Liam