EDIT (octobre 2019):
6 ans plus tard, jQuery File Upload est clairement en train de rendre les gens fous. Si vous trouvez peu de réconfort dans les réponses ici, essayez une recherche de NPM pour une alternative moderne. Cela ne vaut pas la peine, je le promets.J'ai recommandé Uploadify dans l'édition précédente mais, comme l'a souligné un commentateur, ils ne semblent plus offrir une version gratuite. Uploadify était si 2013 de toute façon.
ÉDITER:
Cela semble toujours générer du trafic, alors je vais vous expliquer ce que j'ai fini par faire. J'ai finalement fait fonctionner le plugin en suivant le tutoriel dans la réponse acceptée. Cependant, jQuery File Upload est un vrai problème et si vous recherchez un plugin de téléchargement de fichiers plus simple, je vous recommande vivement Uploadify . Comme une réponse l'a souligné, il n'est gratuit que pour un usage non commercial.Contexte
J'essaie d'utiliser le téléchargement de fichiers jQuery de blueimp pour permettre aux utilisateurs de télécharger des fichiers. Hors de la boîte, il fonctionne parfaitement , en suivant les instructions de configuration. Mais pour l'utiliser pratiquement sur mon site Web, je veux pouvoir faire plusieurs choses:
- Inclure le téléchargeur sur l'une de mes pages existantes
- Changer le répertoire des fichiers téléchargés
Tous les fichiers du plugin se trouvent dans un dossier sous la racine.
J'ai essayé...
- Déplacement de la page de démonstration à la racine et mise à jour des chemins pour les scripts nécessaires
- Changer les options 'upload_dir' et 'upload_url' dans le fichier UploadHandler.php comme suggéré ici .
- Modification de l'URL dans la deuxième ligne du javascript de démonstration
Dans tous les cas, les spectacles de prévisualisation, et les pistes de barre de progression, mais les fichiers ne parviennent pas à télécharger, et je reçois cette erreur de la console: Uncaught TypeError: Cannot read property 'files' of undefined
. Je ne comprends pas comment toutes les parties du plugin fonctionnent, ce qui rend le débogage difficile.
Code
Le javascript dans la page de démonstration:
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = 'file_upload/server/php/UploadHandler.php',
uploadButton = $('<button/>')
.addClass('btn')
.prop('disabled', true)
.text('Processing...')
.on('click', function () {
var $this = $(this),
data = $this.data();
$this
.off('click')
.text('Abort')
.on('click', function () {
$this.remove();
data.abort();
});
data.submit().always(function () {
$this.remove();
});
});
$('#fileupload').fileupload({
url: url,
dataType: 'json',
autoUpload: false,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
maxFileSize: 5000000, // 5 MB
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
data.context = $('<div/>').appendTo('#files');
$.each(data.files, function (index, file) {
var node = $('<p/>')
.append($('<span/>').text(file.name));
if (!index) {
node
.append('<br>')
.append(uploadButton.clone(true).data(data));
}
node.appendTo(data.context);
});
}).on('fileuploadprocessalways', function (e, data) {
var index = data.index,
file = data.files[index],
node = $(data.context.children()[index]);
if (file.preview) {
node
.prepend('<br>')
.prepend(file.preview);
}
if (file.error) {
node
.append('<br>')
.append(file.error);
}
if (index + 1 === data.files.length) {
data.context.find('button')
.text('Upload')
.prop('disabled', !!data.files.error);
}
}).on('fileuploadprogressall', function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .bar').css(
'width',
progress + '%'
);
}).on('fileuploaddone', function (e, data) {
$.each(data.result.files, function (index, file) {
var link = $('<a>')
.attr('target', '_blank')
.prop('href', file.url);
$(data.context.children()[index])
.wrap(link);
});
}).on('fileuploadfail', function (e, data) {
$.each(data.result.files, function (index, file) {
var error = $('<span/>').text(file.error);
$(data.context.children()[index])
.append('<br>')
.append(error);
});
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
Je suis surpris par le manque de documentation; il semble que cela devrait être une chose simple à changer. J'apprécierais si quelqu'un pouvait expliquer comment faire cela.
Réponses:
Je cherchais une fonctionnalité similaire il y a quelques jours et suis tombé sur un bon tutoriel sur tutorialzine. Voici un exemple de travail. Le tutoriel complet peut être trouvé ici .
Formulaire simple pour tenir le dialogue de téléchargement de fichier:
Et voici le code jQuery pour télécharger les fichiers:
Et voici l'exemple de code PHP pour traiter les données:
Le code ci-dessus peut être ajouté à n'importe quel formulaire existant. Ce programme télécharge automatiquement les images, une fois qu'elles sont ajoutées. Cette fonctionnalité peut être modifiée et vous pouvez soumettre l'image pendant que vous soumettez votre formulaire existant.
J'ai mis à jour ma réponse avec le code réel. Tous les crédits à l'auteur original du code.
Source: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
la source
if($_POST)
instruction. POST est censé être vide dans lequel le contenu du fichier est envoyé$_FILES['upfile']['tmp_name']
. J'espère que cela fera gagner du temps à quelqu'un.Je viens de passer 2 heures à me battre avec jQuery Upload mais j'ai abandonné à cause de la quantité de dépendances (j'avais 13 fichiers JS inclus pour obtenir toutes les cloches et sifflets).
J'ai fait un peu plus de recherche et suis tombé sur un projet soigné appelé Dropzone.js , qui n'a aucune dépendance.
L'auteur a également créé une démo de bootstrap inspirée du plugin jQuery File Upload.
J'espère que cela fera gagner du temps à quelqu'un d'autre.
la source
J'ai également eu du mal avec cela, mais je l'ai fait fonctionner une fois que j'ai compris comment les chemins fonctionnent dans UploadHandler.php: upload_dir et upload_url sont à peu près les seuls paramètres à examiner pour le faire fonctionner. Vérifiez également les journaux d'erreurs de votre serveur pour obtenir des informations de débogage.
la source
Découvrez le téléchargeur d'image par glisser-déposer avec aperçu de l'image à l'aide du plugin dropper jquery.
HTML
JS
CSS
Démo Jsfiddle
la source
C'est un bon plugin Angular pour télécharger des fichiers, et c'est gratuit!
téléchargement de fichier angulaire
la source
J'ai eu du mal avec ce plugin pendant un moment sur Rails, puis quelqu'un l'a gemifié en rendant obsolète tout le code que j'avais créé.
Bien qu'il semble que vous ne l'utilisiez pas dans Rails, cependant, si quelqu'un l'utilise, consultez ce joyau . La source est ici -> jQueryFileUpload Rails .
Mettre à jour:
Afin de satisfaire le commentateur, j'ai mis à jour ma réponse. Essentiellement " utilisez cette gemme , voici le code source " Si elle disparaît alors faites-le le long du chemin.
la source
Salut, essayez le lien ci-dessous, c'est très facile. Je suis bloqué depuis longtemps et cela résout mon problème en quelques minutes. http://simpleupload.michaelcbrook.com/#examples
la source
Droply.js est parfait pour cela. C'est simple et livré pré-emballé avec un site de démonstration qui fonctionne hors de la boîte.
la source
Vous pouvez utiliser uploadify c'est le meilleur plugin jquery multiupload que j'ai utilisé.
La mise en œuvre est simple, le support du navigateur est parfait.
la source
Pour le plugin UI, avec la page jsp et Spring MVC.
Exemple html . Doit être dans un élément de formulaire avec un attribut id de fileupload
Exemples de gestionnaires de demandes de téléchargement et de suppression
Exemple de classe pour générer la réponse json requise
Voir https://pitipata.blogspot.co.ke/2017/01/using-jquery-file-upload-ui.html
la source