jQuery File Upload: comment changer l'url de téléchargement de façon dynamique
Je suis en train d'utiliser le blueimp jQuery File Upload dans mon projet. Il convient à mes besoins assez bien mais j'ai besoin de changer l'url des fichiers sont téléchargés dynamiquement après le plugin est créé et configuré. J'ai fait une bonne partie de l'enquête, mais, malheureusement, n'a rien trouvé d'utile. En général, j'ai un bouton pour choisir les fichiers et les fileupload action couvrant le téléchargement. La base de la création ressemble à ceci:
$('[upload-button]').fileupload(new FileUploadConfig())
Et la configuration elle-même:
function FileUploadConfig() {
//is set to a unique value for each file upload
this.url = 'temporary';
this.fileInput = $('[upload-button]');
//... some other code
}
La chose que je dois faire est de changer l'url dans cette config et ensuite appeler data.submit()
. Je l'ai découvert, que cette configuration est enregistré à l'aide de $.data()
et essayé de résoudre le problème avec un tel code
//get the current fileupload configuration
var config = $.data($('[upload-button]').get(0), 'fileupload');
//change the url configuration option
config.options.url = file.link;
//send a file
data.submit();
Toutefois, cela ne fonctionne pas comme je le voulais.
Aucune idée sur la façon d'accomplir cette?
Vous devez vous connecter pour publier un commentaire.
Juste la capture de ce ici pour la postérité.
Dans le courant de jQuery-téléchargement rev, remplacer le complément(evt,données) de la fonction et de définir la propriété url de l'objet de données:
data.submit();
à l'intérieur de votre fonction, sinon il ne sera pas transmis au serveur. Aussi, voici la documentation de la ajouter de la méthode.J'ai accompli cela, lorsque j'ai voulu avoir un upload de fichier vers une url avec un id différent paramètre par paramètre
autoupload
àtrue
et de liaison de lafileuploadstart
rappel:En plus de davbryn de réponse:
Cette chaîne
var qu' = $(this).de données('fileupload');
devrait être remplacé par le présent
var qu' = $(this).de données('blueimpFileupload');
Vous devez ajouter .bind('fileuploadsubmit') partie. Voir l'exemple ci-dessous:
Vous devez lier la fileuploadadd événement.
Supposons que vous avez enregistré l'url dynamique dans un caché d'entrée appelé "dynamicURL", alors vous devez faire ceci:
Voici une exemple de la façon dont vous pourriez faire ceci:
Je l'utiliser pour modifier l'URL basée sur le résultat retourné par le script d'upload, j'ai donc mis new_url = données.résultat.new_url au début du fait de rappel.
À ajouter à davbryn réponse:
Je pense que vous êtes de liaison doit être sur un fileuploadadd comme fileuploadstart ne vous donne pas toutes les données, il vous donne simplement un événement.
https://github.com/blueimp/jQuery-File-Upload/wiki/Options
Cela devrait le faire, (similaire à @Aneon réponse) semble fonctionner pour moi:
La soumission du formulaire, à tout moment après cet appel de fonction utilisera la nouvelle url
(mon code soumet dès que l'image est sélectionnée, n'ai pas testé le manuel de soumettre à l'appel).
Annuler l'inscription de l'extension de l'élément et puis de l'enregistrer à nouveau avec une nouvelle URL.
Salut, il semble être un moyen plus simple de le faire. J'ai mis mon code ci-dessous.
La version de base de uplodify est à partir d'ici
http://www.startutorial.com/articles/view/21
Maintenant ce que j'ai fait c'est que je reçois les valeurs de dossier à partir d'une variable. Puis-je charger la uploadify fonction à chaque fois que je clique sur les listes de l'élément ci-dessous, ces éléments de la liste sont foldernames l'intérieur de la racine du répertoire de téléchargement. Alors, quand je clique, je les reçois que le nom et l'ajouter à la réelle chemin d'accès au dossier et d'appeler la uploadify de nouveau.
Mais alors, si je l'appel, encore et encore, il y aura plus de boutons de navigation appeding sur l'écran donc j'ai juste enlevé l'élément #file_uploadUploader avant l'appel de la uploadify. Donc je suppose que le problème est résolu. au moins pour moi 🙂
Été la recherche de ce pour les deux derniers jours, mais a finalement fait du bien de le résoudre moi-même. B-)
HTML
Jquery