Me gustaría que jQuery limite un campo de carga de archivos solo a jpg/jpeg, png y gif. Estoy haciendo back-end comprobando con PHP
ya. Estoy ejecutando mi botón Enviar a través de una función JavaScript
ya que solo necesito saber cómo verificar los tipos de archivo antes de enviar o alertar.¿Cómo jQuery puede restringir los tipos de archivos durante la carga?
Respuesta
Puede obtener el valor de un campo de archivo igual que en cualquier otro campo. No puedes alterarlo, sin embargo.
Así que para superficialmente verificación si un archivo tiene la extensión correcta, se podría hacer algo como esto:
var ext = $('#my_file_field').val().split('.').pop().toLowerCase();
if($.inArray(ext, ['gif','png','jpg','jpeg']) == -1) {
alert('invalid extension!');
}
podría utilizar el plug-in de validación de jQuery: http://docs.jquery.com/Plugins/Validation
Le pasa a tiene una regla accept() que hace exactamente lo que necesita: http://docs.jquery.com/Plugins/Validation/Methods/accept#extension
Tenga en cuenta que el archivo de control se extiende sion no es a prueba de balas ya que no está relacionado de ninguna manera con el tipo mimético del archivo. Así que podrías tener un .png que sea un documento de Word y un .doc que sea una imagen png perfectamente válida. Así que no olvides hacer más controles en el servidor;)
puede dar un ejemplo de cómo usar esto con http://plugins.krajee.com/file-input#option-allowedfileextensions en IE11 – shorif2000
No se necesita complemento para esta tarea. Adoquinada esto junto a un par de otras secuencias de comandos:
$('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 = '';
}
});
El truco aquí es fijar el botón de subida a discapacitados a menos que y hasta que se seleccione un tipo de archivo válido.
lo siento hermano, pero esa es una mala expresión regular. los archivos pueden tener puntos en su nombre. "giel.asd.aaaaa.jpg.png" .match (/\.(.+)$/) –
¿No desea comprobar más bien en MIME que en cualquier extensión que el usuario mienta? Si es así, entonces es menos de una línea:
<input type="file" id="userfile" accept="image/*|video/*" required />
Agradable pero no aceptado por IE <10. – spadelives
no obtiene lo que necesita. es solo para un manejo más fácil seleccionar una imagen de una carpeta con diferente extensión. como se puede ver aquí -> http://imageshack.us/a/img20/8451/switchzz.jpg – bernte
Como no afecta a IE <10, y no afecta a ningún otro código, es una restricción efectiva sobre lo que estoy tratando de restringir – Leo
para mi caso he utilizado los siguientes códigos:
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>
Esto no puede verificar el tipo y tamaño del archivo, probado en FF. –
Si usted está tratando con múltiples (html 5) carga de archivos, tomé el comentario sugerido superior y lo modifiqué un poco:
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!');
}
}
Para el front-end, es muy conveniente poner el atributo 'accept' si está utilizando un campo de archivo.
Ejemplo:
<input id="file" type="file" name="file" size="30"
accept="image/jpg,image/png,image/jpeg,image/gif"
/>
Un par de notas importantes:
Mucho mejor que usar JQuery –
intento escribir de trabajo ejemplo de código, lo prueba y Todo funciona .
Hare es el código:
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
}
}
Aquí es un simple código JavaScript validación, y después de validar que va a limpiar el archivo de entrada.
<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("");
}
}
Este código funciona bien, pero el único problema es si el formato de archivo es distinto de las opciones especificadas, se muestra un mensaje de alerta, pero que muestra el nombre del archivo, mientras que hay que descuidarlo.
$('#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; }
});
Este ejemplo permite subir imágenes PNG solamente.
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. restringir la selección de carga de archivos a tipos específicos
- 2. Restringir tipos de archivos en JQuery File upload demo
- 3. ¿Cómo restringir los tipos de archivos en FileUpload en MVC3?
- 4. Restringir la carga de archivos a algunas extensiones de archivos
- 5. ¿Dónde guarda PHP los archivos temporales durante la carga?
- 6. Ocultar jQuery Accordion durante la carga
- 7. ¿Cómo restringir varios tipos genéricos?
- 8. dnd, ¿cómo restringir la caída a ciertos tipos de nodos?
- 9. ¿Cómo restringir los mensajes del actor a tipos específicos?
- 10. Cómo restringir/validar archivos subir tipos de archivos del lado del servidor en IIS
- 11. cURL: ¿Cómo mostrar la información de progreso durante la carga?
- 12. Obteniendo el progreso de carga durante la carga de archivos usando Webclient.Uploadfile
- 13. ¿Cómo restringir la búsqueda de Drupal de indexar todos los tipos de contenido?
- 14. ¿Cómo distinguir un archivo de una carpeta durante la carga usando arrastrar y soltar en jquery?
- 15. ¿Cómo deshabilitar todos los botones de la página durante la carga?
- 16. Carga de archivos Grails: ¿cómo reconocer archivos y/o tipos de contenido?
- 17. Plugin de carga de archivos jQuery: ¿Cómo subir a subcarpetas?
- 18. Android ProgessBar durante la carga de WebView
- 19. ASP.NET, C#, IIS, TIPOS MIME, carga de archivos de CONDICIONAL
- 20. java.lang.UnsatisfiedLinkError durante la carga de DB2 JDBC
- 21. Carga de archivos múltiples con jQuery
- 22. Carga de archivos PHP usando jquery post
- 23. Ejecutar un análisis de virus durante la carga de archivos en ASP.NET
- 24. ¿Cómo detectar de manera confiable los tipos de archivos?
- 25. Cómo minimizar los archivos jquery?
- 26. Carga de archivos múltiples con ASP.NET MVC y jQuery Complemento de carga de archivos múltiples
- 27. ¿Cómo restringir T a los tipos de valores usando una restricción?
- 28. Uso de .htaccess para restringir el acceso a los archivos
- 29. Validar la carga de archivos: Jquery y el atributo "Aceptar"
- 30. Carga de archivos a través de AJAX dentro de JQuery
y enlazarlo a su formulario:. '$ ("# my_upload_form") se unen ("enviar", la función() { // arriba marca }); ' – 321X
puede usar' $ ('# file_field'). Change (function() {// above check}}; ' – makki
' $ ("# my_upload_form"). Bind ("submit", function() {// check anterior}); 'ahora debería estar enlazado usando' $ ("# my_upload_form"). Submit (function() {//check anterior}); 'http://api.jquery.com/submit/. también puede evitar que el formulario se envíe usando '$ (" # my_upload_form "). submit (función (e) {// verificación anterior e.preventDefault();});' – Liam