blueImp/jquery file upload - Comment puis-je obtenir le message d'erreur si le type de fichier n'a pas été acceptée?
Je veux utiliser le BlueImp/Jquery File Upload pour être en mesure de télécharger des images pour le web serveur.
J'ai ce code JS que j'ai produit par la lecture de plusieurs sources
$('#file_upload').fileupload('option', {
dataType: 'json',
url: '/Upload/UploadFiles',
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
process: [
{
action: 'load',
fileTypes: /^image\/(gif|jpeg|png)$/,
maxFileSize: 20000000 //20MB
},
{
action: 'resize',
maxWidth: 1440,
maxHeight: 900
},
{
action: 'save'
}
],
progressall: function (e, data) {
$(this).find('.progressbar').progressbar({ value: parseInt(data.loaded / data.total * 100, 10) });
},
done: function (e, data) {
$('#show_image').append('<img src="' + data.result[0].ThumbURL + '" />');
$('#imgID').val($('#imgID').val() + data.result[0].Id + ',');
$(this).find('.progressbar').progressbar({ value: 100 });
},
error: function (e, data) {
var a = 1;
}
});
});
Cela fonctionne, car il n'est pas en mesure de télécharger n'importe quel fichier qui n'est pas une image, mais je voudrais être en mesure d'obtenir les messages d'erreur (dans le cas où il en existe un) pour afficher à l'utilisateur.
Dans leur démo ils ont un peu de code (jquery.fileupload-ui.js et jquery.fileupload-fp.js) qui créent de la "magie" de l'HTML avec l'erreur à l'intérieur (je suis encore strugling de le comprendre).
Je ne pas vraiment si je dois utiliser ces plug-ins trop et en quelque sorte personnaliser le code HTML généré ou si c'est plus simple pour obtenir les informations manuellement et de le remplir.
Je suis assez nouveau à JS et Jquery, donc peut-être que je manque quelque chose.
Comment dois-je configurer le code HTML généré ou comment puis-je obtenir le message d'erreur?
Grâce,
Oscar
Vous devez vous connecter pour publier un commentaire.
Pour cela, vous pouvez utiliser le fichier ajouté de rappel pour valider les fichiers, comme cela, utiliser le "return false" pour éviter l'ajout de ce fichier;
ou vous pouvez vous inscrire fileuploadadded de rappel comme ça,
aussi, vous pouvez accéder à fileupload acceptFileTypes en utilisant les options;
e.originalEvent.les données.fileupload.des options.acceptFileTypes
Vous pouvez trouver plus d'informations ici;
https://github.com/blueimp/jQuery-File-Upload/wiki/Options
Je sais que c'est un vieux thread, mais si quelqu'un cherche encore comment faire pour obtenir le message d'erreur, voici une façon de le faire:
data.files[index].error
est exactement ce que je cherchais à trouver (où était le message d'erreur en cours d'enregistrement).Comme mentionné par user2999209, la bonne façon de faire est avec la
fileuploadprocessfail
de rappel.Pour compléter sa réponse, si vous souhaitez traduire le message d'erreur vous devez passer à la suivante (sans-papiers) option:
Essayer de télécharger un fichier avec le mauvais type de fichier va entraîner le message "AAA type de Fichier non autorisé" s'affiche.
Si vous utilisez un serveur PHP, j'ai une solution plus simple. Si vous n'êtes pas, je crois que cela peut vous aider.
Vous n'avez pas besoin d'utiliser acceptFileTypes param dans le frontend. Initialiser le PHP UploadHandler classe avec ces params:
Lorsque vous passez indésirables de type de fichier ou la taille du fichier, L'ajax retour sera quelque chose comme
ou
Utiliser le
processfail
rappelL'ordre de chargement des scripts est important pour obtenir le message d'erreur s'affichent par défaut processus de validation,
Cette commande fonctionne pour moi :
Il serait préférable de valider le type de fichier (il serait un format "image/jpeg") que de l'extension. Dans ce cas, vous éviter les problèmes potentiels avec la casse et similaires inattendu troubles
Si vous êtes nouveau à la compréhension du fonctionnement de javascript errorhandling fonctionne, il est préférable de lire sur le sujet: try/catch (MDN)
Cependant, l'erreur est en fait une méthode à l'intérieur de la fileupload prototype, donc, théoriquement, cette fonction ne s'exécute lorsque l'erreur se produit.
Juste ajouter {votre code} à la errorHandler dans la méthode.
Si cette alerte n'arrive jamais, alors aucune erreur n'est générée. Le code suivant est normalement la façon dont vous les attraper. (il ne le fait pas déjà?)
Rien, j'ai trouvé dans ces répondu a fonctionné pour moi, et, assez étrangement, les développeurs qui ont écrit les démos pour que le plugin utilise un style différent de ce qui est décrit dans la documentation. De toute façon, que du côté de la pointe.
J'ai copié le code qu'ils utilisent pour obtenir de l'INTERFACE utilisateur de la version de travail, et que, finalement, a fait le tour pour moi. Ils utilisent l' .sur la méthode et 'processalways" pour vérifier les erreurs au lieu d'utiliser une "erreur" ou " l'échec de la méthode.
view-source:http://blueimp.github.io/jQuery-File-Upload/basic-plus.html
Voici le code source.
Acclamations
.jpg
des fichiers de plus de 999 KO. Comment embarrassant.