2009-05-07 16 views

Odpowiedz

17

Sprawdź to value nieruchomości:

w jQuery (ponieważ tag wspomina):

$('#fileInput').val() 

albo w waniliowym javascript:

document.getElementById('myFileInput').value 
0

W Firefoksie przynajmniej inspektor DOM mówi mi, że elementy wejściowe pliku mają właściwość o nazwie files. Powinieneś być w stanie sprawdzić jego długość.

document.getElementById('myFileInput').files.length 
+0

Nie działa w chrome więc prawdopodobnie nie działa w IE albo –

+0

To HTML5: http: // stackoverflow .com/questions/7684011/get-the-file-names-from-multiple-file-upload-field – ANeves

0

mam to od niektórych forum. Mam nadzieję, że ci się przyda.

<script type="text/javascript"> 
function validateFileExtension(fld) { 
    if(!/(\.bmp|\.gif|\.jpg|\.jpeg)$/i.test(fld.value)) { 
     alert("Invalid image file type.");  
     fld.form.reset(); 
     fld.focus();   
     return false; 
    } 
    return true; 
} </script> </head> 
<body> <form ...etc... onsubmit="return 
validateFileExtension(this.fileField)"> <p> <input type="file" 
name="fileField" onchange="return validateFileExtension(this)"> 
<input type="submit" value="Submit"> </p> </form> </body> 
+5

Witamy w SO. Jeśli otrzymasz kod z innego źródła, powinieneś go odpowiednio przypisać i/lub powiązać z nim, ponieważ może to stanowić naruszenie praw autorskich, a przynajmniej zasługujesz na uznanie, gdy jest to wymagane. – Scott

13

Moja funkcja sprawdzi, czy użytkownik wybrał plik, czy też nie, i możesz również sprawdzić, czy chcesz zezwolić na rozszerzenie pliku, czy nie.

Spróbuj tego:

 
<input type="file" name="fileUpload" onchange="validate_fileupload(this.value);"> 

function validate_fileupload(fileName) 
{ 
    var allowed_extensions = new Array("jpg","png","gif"); 
    var file_extension = fileName.split('.').pop().toLowerCase(); // split function will split the filename by dot(.), and pop function will pop the last element from the array which will give you the extension as well. If there will be no extension then it will return the filename. 

    for(var i = 0; i <= allowed_extensions.length; i++) 
    { 
     if(allowed_extensions[i]==file_extension) 
     { 
      return true; // valid file extension 
     } 
    } 

    return false; 
} 
+1

Pętla for powinna być KevInSol

1

Opierając się na rozwiązanie Ravinders ten kod zatrzymuje formularz składany. Warto sprawdzić rozszerzenie również po stronie serwera. Dzięki temu hakerzy nie ładują niczego, co chcą.

<script> 
var valid = false; 

function validate_fileupload(input_element) 
{ 
    var el = document.getElementById("feedback"); 
    var fileName = input_element.value; 
    var allowed_extensions = new Array("jpg","png","gif"); 
    var file_extension = fileName.split('.').pop(); 
    for(var i = 0; i < allowed_extensions.length; i++) 
    { 
     if(allowed_extensions[i]==file_extension) 
     { 
      valid = true; // valid file extension 
      el.innerHTML = ""; 
      return; 
     } 
    } 
    el.innerHTML="Invalid file"; 
    valid = false; 
} 

function valid_form() 
{ 
    return valid; 
} 
</script> 

<div id="feedback" style="color: red;"></div> 
<form method="post" action="/image" enctype="multipart/form-data"> 
    <input type="file" name="fileName" accept=".jpg,.png,.bmp" onchange="validate_fileupload(this);"/> 
    <input id="uploadsubmit" type="submit" value="UPLOAD IMAGE" onclick="return valid_form();"/> 
</form> 
Powiązane problemy