Mi piacerebbe che jQuery limiti un campo di caricamento file solo a jpg/jpeg, png e gif. Sto già facendo il backend di controllo con PHP
. Sto facendo funzionare il mio pulsante di invio tramite una funzione JavaScript
quindi ho davvero bisogno di sapere come verificare i tipi di file prima di inviare o avvisare.Come limitare i tipi di file jQuery al caricamento?
risposta
È possibile ottenere il valore di un campo di file proprio come qualsiasi altro campo. Non puoi modificarlo, comunque.
Quindi, per superficialmente controllare se un file ha l'estensione a destra, si potrebbe fare qualcosa di simile:
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
è possibile utilizzare il plugin di convalida per jQuery: http://docs.jquery.com/Plugins/Validation
Succede a avere una regola accept() che fa esattamente ciò che ti serve: http://docs.jquery.com/Plugins/Validation/Methods/accept#extension
Nota che il file di controllo si estende Sion non è a prova di proiettile poiché non è in alcun modo correlato al mimetype del file. Quindi potresti avere un file .png che è un documento word e un .doc che è un'immagine png perfettamente valida. Quindi non dimenticare di effettuare più controlli sul lato server;)
puoi fornire esempi su come utilizzare questo con http://plugins.krajee.com/file-input#option-allowedfileextensions su IE11 – shorif2000
Nessun plug-in necessario per questa attività. Acciottolato questo insieme da un paio di altri script:
$('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 = '';
}
});
Il trucco è quello di impostare il pulsante Carica per portatori di handicap a meno che e fino a selezionare un tipo di file valido.
sorry bro, ma si tratta di una espressione regolare negativa. i file possono avere punti nel suo nome. "giel.asd.aaaaa.jpg.png" .match (/.(.+)$/) –
Non si desidera controllare piuttosto su MIME che su qualsiasi estensione l'utente stia mentendo? Se è così allora è meno di una riga:
<input type="file" id="userfile" accept="image/*|video/*" required />
Bello ma non accettato da IE <10. – spadelives
non ottiene ciò di cui ha bisogno. è solo per facilitare la gestione di selezionare un'immagine da una cartella con estensione diversa. come puoi vedere qui -> http://imageshack.us/a/img20/8451/switchzz.jpg – bernte
Poiché non fa male a IE <10 e non fa male al codice, è una restrizione efficace su ciò che stai cercando di restringere. – Leo
per il mio caso ho usato i seguenti codici:
if (!(/\.(gif|jpg|jpeg|tiff|png)$/i).test(fileName)) {
alert('You must select an image file only');
}
function validateFileExtensions(){
var validFileExtensions = ["jpg", "jpeg", "gif", "png"];
var fileErrors = new Array();
$("input:file").each(function(){
var file = $(this).value;
var ext = file.split('.').pop();
if($.inArray(ext, validFileExtensions) == -1) {
fileErrors.push(file);
}
});
if(fileErrors.length > 0){
var errorContainer = $("#validation-errors");
for(var i=0; i < fileErrors.length; i++){
errorContainer.append('<label for="title" class="error">* File:'+ file +' do not have a valid format!</label>');
}
return false;
}
return true;
}
<form enctype="multipart/form-data">
<input name="file" type="file" />
<input type="submit" value="Upload" />
</form>
<script>
$('input[type=file]').change(function(){
var file = this.files[0];
name = file.name;
size = file.size;
type = file.type;
//your validation
});
</script>
Questo non può controllare il tipo e la dimensione del file, testato in FF. –
Se hai a che fare con più (HTML 5) caricamento di file, ho preso il commento suggerito in alto e modificato leggermente:
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!');
}
}
Per il front-end è piuttosto comodo attribuire l'attributo 'accept' se si utilizza un campo file.
Esempio:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
Un paio di note importanti:
Molto meglio dell'utilizzo di JQuery –
provo a scrivere lavorare esempio di codice, i test e tutto funziona .
Hare è il codice:
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
}
}
Ecco un semplice codice JavaScript convalida, e dopo che lo convalida pulirà il file di input.
<input type="file" id="image" accept="image/*" onChange="validate(this.value)"/>
function validate(file) {
var ext = file.split(".");
ext = ext[ext.length-1].toLowerCase();
var arrayExtensions = ["jpg" , "jpeg", "png", "bmp", "gif"];
if (arrayExtensions.lastIndexOf(ext) == -1) {
alert("Wrong extension type.");
$("#image").val("");
}
}
Questo codice funziona bene, ma l'unico problema è che se il formato del file è diverso da opzioni specificate, mostra un messaggio di avviso, ma viene visualizzato il nome del file, mentre dovrebbe essere trascurato esso.
$('#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; }
});
Questo esempio consente di caricare solo immagini PNG.
HTML
<input type="file" class="form-control" id="FileUpload1" accept="image/png" />
JS
$('#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;
}
});
- 1. Come limitare i tipi di file caricati al controller Spring MVC3
- 2. Restringere i tipi di file in JQuery File upload demo
- 3. Come limitare/convalidare i file di file di caricamento del file lato server su IIS
- 4. Come limitare i tipi di file con il tipo di file di input HTML?
- 5. jQuery Caricamento file: come modificare dinamicamente l'url di caricamento
- 6. Limitare una corrispondenza in vim a determinati tipi di file?
- 7. Come limitare la dimensione del file di tipo di caricamento file in PHP?
- 8. jQuery Caricamento file "Errore - Risultato caricamento file vuoto" - Applicazione Rails
- 9. Caricamento file csv in jQuery?
- 10. jQuery FileUploadUI Caricamento file singolo
- 11. Caricamento file jQuery in AngularJS
- 12. Silverlight 4: Caricamento di file al server
- 13. Caricamento file multipli con jQuery
- 14. Caricamento file di Gmail con jQuery
- 15. come limitare l'ambito di ricerca jquery
- 16. Come limitare T ai tipi di valore utilizzando un vincolo?
- 17. Jquery di query elemento di limitare i risultati
- 18. jQuery Caricamento file - come riconoscere quando tutti i file sono stati caricati
- 19. Come limitare il caricamento del Web UI di Kendo Per consentire solo un singolo caricamento?
- 20. come utilizzare la versione angolare del caricamento di file jquery?
- 21. Come convalidare il tipo di file di un caricamento file?
- 22. Come limitare i processi figlio di Jenkins?
- 23. Come limitare un protocollo solo ai tipi di valore?
- 24. Come limitare i framework Web
- 25. caricamento file jquery - come sovrascrivere il file NON rinominare
- 26. Caricamento di più file con ASP.NET MVC e jQuery Plugin di caricamento di file multipli
- 27. Caricamento file Blueimp: caricamento file singolo
- 28. Caricamento di file in blocchi utilizzando il plug-in di caricamento del file jquery in JAVA
- 29. Barra di avanzamento caricamento file Blueimp/Jquery per ogni file
- 30. Caricamento di un file relativo al file jar in esecuzione
e associarlo al form:. '$ ("# my_upload_form") si legano ("submit", function() { // sopra il controllo }); ' – 321X
si potrebbe usare' $ ('# file_field'). Change (function() {// above check}); ' – makki
' $ ("# my_upload_form"). Bind ("submit", function() {// above check}); 'ora dovrebbe essere associato usando' $ ("# my_upload_form"). Submit (function() {//above check}); 'http://api.jquery.com/submit/. puoi anche impedire che il modulo invii usando '$ (" # my_upload_form "). submit (function (e) {// above check e.preventDefault();});' – Liam