首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery验证文件类型

如何使用jquery验证文件类型
EN

Stack Overflow用户
提问于 2018-05-01 02:19:35
回答 2查看 3.4K关注 0票数 1

我刚开始做网络编程。我需要验证和上传一个文件。当文件类型不匹配时,我设置了两个条件,然后显示警告(“无效文件”)和第二个条件,即文件为空或匹配,然后插入数据。但是,当文件/图像类型为空时,无法插入数据。以下是我的HTML代码:

代码语言:javascript
复制
<form method="post" id="insert_form" enctype="multipart/form-data">
  <label>Enter Employee Name</label>
  <input type="text" name="name" id="name" class="form-control" />
  <br />
  <label>Enter Employee Address</label>
  <textarea name="address" id="address" class="form-control"></textarea>
  <br />
  <label>Select Gender</label>
  <select name="gender" id="gender" class="form-control">
    <option value="Male">Male</option>
    <option value="Female">Female</option>
  </select>
  <br />
  <label>Enter Designation</label>
  <input type="text" name="designation" id="designation" class="form-control" />
  <br />
  <label>Enter Age</label>
  <input type="text" name="age" id="age" class="form-control" />
  <br />
  <label>File</label>
  <br>
  <div>
    <img src="" id="pict" width="100px" class="img-thumbna">
  </div>
  <br>
  <input type="file" name="image" id="image">
  <br/>
  <input type="hidden" name="employee_id" id="employee_id" />
  <input type="submit" name="insert" id="insert" value="Insert" class="btn btn-success" />
</form>

我的验证代码:

代码语言:javascript
复制
function listMajors(auth) {
  const sheets = google.sheets({ version: 'v4', auth });
  sheets.spreadsheets.values.get({
    spreadsheetId: '1S5SDKN0t7jsiL_7LVPdpDWWay1_0Bv5LOAO9EaTw_8M',
    range: 'Sheet1!A:A',
  }, (err, { data }) => {
    if (err) return console.log('The API returned an error: ' + err);
    const rows = data.values;
    if (rows.length) {
      // console.log('Name, Major:');
      // Print columns A and E, which correspond to indices 0 and 4.
      rows.map((row) => {
        // console.log(`${row[0]}, ${row[4]}`);
      })
    } else {
      console.log('No data found.');
    }
  });
}

$("#insert_form").on('submit', function (event) {
  event.preventDefault();
  var exten = $("#image").val().split('.').pop().toLowerCase();

  if ($("#name").val() == "") {
    alert('name is required');
  }
  else if (jQuery.inArray(exten, ['jpg', 'jpeg']) == -1) {
    alert("Invalid File");
  }
  else {
    $.ajax({
      url: 'insert.php',
      method: 'POST',
      data: new FormData(this),
      contentType: false,
      processData: false,

      beforeSend: function () {
        $("#insert").val('Inserting....');
      },
      success: function (data) {
        $("#add_data_Modal").modal('hide');
        $("#insert_form")[0].reset();
        $("#employee_table").html(data);
      }
    });

  }
});

你能帮我一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-01 02:34:50

this.files是所选文件中的数组。

this.files[0].type.split('/')[1]获取文件的类型,并使用/拆分字符串。该文件的类型类似于image/jpgimage/pngtext/plain等。

因此,您可以检查类型是否在有效的扩展数组中。

这里有一个简单的演示。

代码语言:javascript
复制
let validExt = ['jpg', 'jpeg']

$('input').on('change', function(){
  var extension = this.files[0].type.split('/')[1]
  console.log(this.files[0].type)
  if(validExt.indexOf(extension) == -1){
    alert('Invalid file.')
  }
})
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file">

票数 1
EN

Stack Overflow用户

发布于 2018-05-01 03:54:33

你需要对你的脚本做一点改动。

代码语言:javascript
复制
$("#insert_form").on('submit', function (event) {
    event.preventDefault();
    formData = new FormData($(this)[0]);//This will contain your form data
    var exten = $("#image").val().split('.').pop().toLowerCase();
    if ($("#name").val() == "") {
        alert('name is required');
    }
    else if (jQuery.inArray(exten, ['jpg', 'jpeg']) == -1) {
        alert("Invalid File");
    }
    else {
        $.ajax({
            url: 'insert.php',
            method: 'POST',
            data: formData,
            cache: false,// add this line too
            contentType: false,
            processData: false,
            beforeSend: function () {
                $("#insert").val('Inserting....');
            },
            success: function (data) {
                $("#add_data_Modal").modal('hide');
                $("#insert_form")[0].reset();
                $("#employee_table").html(data);
            }
        });
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50110607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档