Cách kiểm tra xem tệp đầu vào có trống trong jQuery không


100

Hoàn toàn mới đối với JS.
Tôi đang cố gắng kiểm tra xem phần tử đầu vào tệp có trống không khi gửi biểu mẫu bằng jQuery / JavaScript. Tôi đã trải qua một loạt các giải pháp và không có gì phù hợp với tôi. Tôi đang cố gắng tránh /c/fakepath(trừ khi không có lựa chọn nào khác)

<input type="file" name="videoFile" id="videoUploadFile" />

Điều này không hoạt động:

var vidFile = $("#videoUploadFile").value;

Cách duy nhất tôi có thể lấy tên tệp là nếu tôi sử dụng như sau:

var vidFile = document.getElementById("videoUploadFile").files[0].name;

Nếu không có tệp nào có sẵn, mã sẽ gây ra lỗi:

không thể đọc tên thuộc tính của undefined

điều này có ý nghĩa vì mảng không được đặt. nhưng tôi không thể tìm ra cách thực hiện bất kỳ xử lý lỗi nào với điều này.

Làm cách nào để lấy phần tử đầu vào tệp đúng cách videoUploadFile, kiểm tra xem nó có trống không, đưa ra thông báo lỗi nếu nó trống?


7
Kiểm tra .files.length?
Teemu

5
Tại sao ai đó lại phản đối câu hỏi này? Tôi không hiểu SO đôi khi. Tôi upvoted bạn sao để 0.
Seano666

bạn cũng có thể lọc các file không có sản phẩm nào nếu bạn có nhiều hơn một trên biểu mẫu:var files = $('#formbody').find('input[type=file]').filter(function() { return $(this)[0].files.length > 0; });
Piotr Kowalski

Câu trả lời:


177

Chỉ cần kiểm tra độ dài của thuộc tính tệp , đó là đối tượng FileList có trên phần tử đầu vào

if( document.getElementById("videoUploadFile").files.length == 0 ){
    console.log("no files selected");
}

1
( document.getElementById("videoUploadFile").files.length === 0 )
Pathros

140

Đây là phiên bản jQuery của nó:

if ($('#videoUploadFile').get(0).files.length === 0) {
    console.log("No files selected.");
}

1
Câu trả lời này thích hợp hơn khi OP yêu cầu giải pháp JQuery.
Hussain Akbar

$('#videoUploadFile').get(0)giống như $('#videoUploadFile')[0]nhưng có lẽ có get()một số kiểm tra sự tỉnh táo
zanderwar

18

Để kiểm tra xem tệp đầu vào có trống hay không bằng cách sử dụng thuộc tính độ dài tệp, indexnên được chỉ định như sau:

var vidFileLength = $("#videoUploadFile")[0].files.length;
if(vidFileLength === 0){
    alert("No file selected.");
}

3

Câu hỏi: làm thế nào để kiểm tra File trống hay không?

Trả lời: Tôi đã giải quyết vấn đề này bằng cách sử dụng mã Jquery này

//If your file Is Empty :     
      if (jQuery('#videoUploadFile').val() == '') {
                       $('#message').html("Please Attach File");
                   }else {
                            alert('not work');
                   }

    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="file" id="videoUploadFile">
<br>
<br>
<div id="message"></div>


1
Giải thích thêm về lý do tại sao điều này sẽ hoạt động hoặc điều gì đã sai trong câu hỏi ban đầu sẽ giúp nâng cao chất lượng của câu trả lời này.
Josh Burgess

@josh burgess câu trả lời này là cách kiểm tra Tệp trống hay không là một cách khác để kiểm tra tệp của bạn khi bạn gửi biểu mẫu bằng jquery.
Adnan Limdiwala

@JoshBurgess OP đang hỏi cách thực hiện điều này trong jQuery. Tất cả các câu trả lời khác hoặc sử dụng vani JS hoặc kết hợp JS và jQuery. Đây là người duy nhất sử dụng jQuery độc quyền. Có lẽ tôi kén chọn, nhưng tôi không thích trộn jQuery với vani JS trừ khi tôi thực sự phải làm.
Eduard Luca

@EduardLuca Câu trả lời đã hơn hai năm. Nó đã được gắn cờ là chất lượng thấp vào thời điểm đó. Phần giải thích về mã này thường được cộng đồng SO đánh giá cao và nhận xét đó có ý nghĩa như một lời nhắc nhở hữu ích không chỉ đăng mã mà còn giải thích mã là gì và tại sao nó hoạt động. Hy vọng rằng sẽ giúp mọi thứ sáng tỏ.
Josh Burgess

3

Tôi biết mình đã đến bữa tiệc muộn nhưng tôi nghĩ rằng tôi sẽ thêm những gì tôi đã sử dụng cho việc này - chỉ đơn giản là kiểm tra xem đầu vào tải lên tệp có chứa giá trị trung thực hay không với toán tử not & JQuery như vậy:

if (!$('#videoUploadFile').val()) {
  alert('Please Upload File');
}

Lưu ý rằng nếu đây là một biểu mẫu, bạn cũng có thể muốn bọc nó bằng trình xử lý sau để ngăn biểu mẫu gửi đi:

$(document).on("click", ":submit", function (e) {

  if (!$('#videoUploadFile').val()) {
  e.preventDefault();
  alert('Please Upload File');
  }

}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.