2013-08-01 4 views
16

Я запускаю загрузку файла по клику href.
Я пытаюсь заблокировать все расширения, кроме doc, docx и pdf.
Я не получаю правильное значение предупреждения.Разрешить только формат pdf, doc, docx для загрузки файлов?

<div class="cv"> Would you like to attach you CV? <a href="" id="resume_link">Click here</a></div> 
    <input type="file" id="resume" style="visibility: hidden"> 

Javascript:

 var myfile=""; 
     $('#resume_link').click(function() { 
      $('#resume').trigger('click'); 
      myfile=$('#resume').val(); 
      var ext = myfile.split('.').pop(); 
      //var extension = myfile.substr((myfile.lastIndexOf('.') +1)); 

      if(ext=="pdf" || ext=="docx" || ext=="doc"){ 
       alert(ext); 
      } 
      else{ 
       alert(ext); 
      } 
     }) 

MyFiddle ..its показывая ошибку

+0

Я не думаю, что будет работать во всех браузерах. Если вы используете HTML5, вы можете использовать атрибут 'accept'. – putvande

+0

Ваша скрипка для меня не работает. Вам нужно как минимум закрыть тег ''. – Rup

+0

@Rup '' теги самозакрывающиеся. –

ответ

13

Лучше использовать change событие на поле ввода.

Обновленный источник:

var myfile=""; 

$('#resume_link').click(function(e) { 
    e.preventDefault(); 
    $('#resume').trigger('click'); 
}); 

$('#resume').on('change', function() { 
    myfile= $(this).val(); 
    var ext = myfile.split('.').pop(); 
    if(ext=="pdf" || ext=="docx" || ext=="doc"){ 
     alert(ext); 
    } else{ 
     alert(ext); 
    } 
}); 

Обновлено jsFiddle.

+0

нет нет нет ... его правильный ..я только что допустил ошибку при загрузке синтаксиса –

+0

Хорошо, справедливо. Пожалуйста, исправьте свою скрипку или сообщите нам, какую ошибку вы на самом деле видите (поведение и ошибки скриптов), или и то, и другое - потому что в настоящее время мы не можем воспроизвести ее. – Rup

+0

моя скрипка не работает с ее ошибкой отображения '{" error ":" Пожалуйста, используйте POST-запрос "}' ... и я просто не могу получить предупреждение о моем расширении ?? нет синтаксической ошибки .. –

0

Постарайтесь это

$('#resume_link').click(function() { 
     var ext = $('#resume').val().split(".").pop().toLowerCase(); 
     if($.inArray(ext, ["doc","pdf",'docx']) == -1) { 
      // false 
     }else{ 
      // true 
     } 
    }); 

Надеется, что это поможет

+0

Можете ли вы подчеркнуть, что вы изменили? Помимо рефакторинга/перегруппировки, похоже, что это просто 'toLowerCase()'? – Rup

+0

@Rup if ($. InArray (ext, ["doc", "pdf", 'docx']) == -1) посмотрел здесь –

+0

вы просто сорвали его с другого вопроса .. я только что увидел точный ответ на какой-то другой вопрос .. –

42

Вы можете использовать

<input name="Upload Saved Replay" type="file" 
    accept="application/pdf,application/msword, 
    application/vnd.openxmlformats-officedocument.wordprocessingml.document"/> 

whearat

  • application/pdf означает .pdf
  • application/msword означает .doc
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document означает .docx

вместо этого.

[EDIT] Будьте предупреждены, .dot может совпадать.

+0

является ли этот кросс-браузер совместимым ??? –

+0

это примет doc и docx ... и мне не нужно писать какие-либо подтверждения для этого? –

+0

См., Если клиент-os не знает о том, что является типом '.pdf'-файлов, он не будет отображать' .pdf'-файлы для выбора! Вы можете использовать 'navigator.mimeType' для оценки этого файла. –

0
var file = form.getForm().findField("file").getValue(); 
var fileLen = file.length; 
var lastValue = file.substring(fileLen - 3, fileLen); 
if (lastValue == 'doc') {//check same for other file format} 
0

$('#surat_lampiran').bind('change', function() { 
 
    alerr = ""; 
 
    sts = false; 
 
    alert(this.files[0].type); 
 
    if(this.files[0].type != "application/pdf" && this.files[0].type != "application/msword" && this.files[0].type != "application/vnd.openxmlformats-officedocument.wordprocessingml.document"){ 
 
    sts = true; 
 
    alerr += "Jenis file bukan .pdf/.doc/.docx "; 
 
} 
 
});

0

Вы можете просто сделать его Regex:

Форма:

<form method="post" action="" enctype="multipart/form-data"> 
    <div class="uploadExtensionError" style="display: none">Only PDF allowed!</div> 
    <input type="file" name="item_file" /> 
    <input type="submit" id='submit' value="submit"/> 
</form> 

И ява скрипт проверки:

<script> 
    $('#submit').click(function(event) { 
     var val = $('input[type=file]').val().toLowerCase(); 
     var regex = new RegExp("(.*?)\.(pdf|docx|doc)$"); 
     if(!(regex.test(val))) { 
      $('.uploadExtensionError').show(); 
      event.preventDefault(); 
     } 
    }); 
</script> 

Cheers!

-1

Ниже код работает для меня:

<input #fileInput type="file" id="avatar" accept="application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> 

application/pdf means .pdf 
application/msword means .doc 
application/vnd.openxmlformats-officedocument.wordprocessingml.document means .docx 
Смежные вопросы