Puis-je utiliser le code jQuery suivant pour effectuer un téléchargement de fichier à l'aide de la méthode POST d'une demande ajax?
$.ajax({
type: "POST",
timeout: 50000,
url: url,
data: dataString,
success: function (data) {
alert('success');
return false;
}
});
Si c'est possible, dois-je remplir une data
partie? Est-ce la bonne façon? Je POSTE uniquement le fichier côté serveur.
J'ai fait des recherches sur Google, mais ce que j'ai trouvé était un plugin alors que dans mon plan, je ne veux pas l'utiliser. Du moins pour le moment.
javascript
jquery
ajax
post
file-upload
Willy
la source
la source
Réponses:
Le téléchargement de fichiers n'est
paspossible via AJAX.Vous pouvez télécharger un fichier sans actualiser la page en utilisant
IFrame
.Vous pouvez vérifier plus de détails ici .
MISE À JOUR
Avec XHR2, le téléchargement de fichiers via AJAX est pris en charge. Par exemple via un
FormData
objet, mais malheureusement, il n'est pas pris en charge par tous les / anciens navigateurs.FormData
le support commence à partir des versions suivantes des navigateurs de bureau.Pour plus de détails, voir le lien MDN .
la source
enctype
sur"form/multipart"
!Les iframes ne sont plus nécessaires pour télécharger des fichiers via ajax. Je l'ai récemment fait moi-même. Consultez ces pages:
Utilisation de téléchargements de fichiers HTML5 avec AJAX et jQuery
http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface
Mis à jour la réponse et nettoyé. Utilisez la fonction getSize pour vérifier la taille ou utilisez la fonction getType pour vérifier les types. Ajout du code html et css de la barre de progression.
Comment utiliser la classe Upload
Code HTML de la barre de progression
Code CSS de la barre de progression
la source
writer(catchFile)
. Qu'est-ce que c'estwriter()
?La publication et le téléchargement de fichiers Ajax sont possibles. J'utilise la
jQuery $.ajax
fonction pour charger mes fichiers. J'ai essayé d'utiliser l'objet XHR mais je n'ai pas pu obtenir de résultats côté serveur avec PHP.Comme vous pouvez le voir, vous devez créer un objet FormData, vide ou à partir de (sérialisé? -
$('#yourForm').serialize())
formulaire existant, puis attacher le fichier d'entrée.Voici plus d'informations: - Comment télécharger un fichier à l'aide de jQuery.ajax et FormData - Téléchargement de fichiers via jQuery, l'objet FormData est fourni et aucun nom de fichier, demande GET
Pour le processus PHP, vous pouvez utiliser quelque chose comme ceci:
la source
formData.append('file', $('#file')[0].files[0]);
revientundefined
etconsole.log(formData)
n'a rien sauf_proto_
var formData = new FormData(); formData.append('file', document.getElementById('file').files[0]); $.ajax({ url : $("form[name='uploadPhoto']").attr("action"), type : 'POST', data : formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType success : function(data) { console.log(data); alert(data); } });
Formulaire de téléchargement simple
la source
Je suis assez en retard pour cela, mais je cherchais une solution de téléchargement d'images basée sur ajax et la réponse que je cherchais était un peu dispersée dans cet article. La solution que j'ai choisie impliquait l'objet FormData. J'ai assemblé une forme de base du code que j'ai mis en place. Vous pouvez voir qu'il montre comment ajouter un champ personnalisé au formulaire avec fd.append () ainsi que comment gérer les données de réponse lorsque la demande ajax est effectuée.
Importer du HTML:
Dans le cas où vous travaillez avec php, voici un moyen de gérer le téléchargement qui comprend l'utilisation des deux champs personnalisés illustrés dans le code HTML ci-dessus.
Upload.php
la source
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https,
comprends pourquoi est-ce si monsieur que je copie coller votre code tel qu'il estfile://
, plutôt que d'utiliser un serveur Web? En passant, il n'est pas recommandé de simplement copier-coller du code à l'aveugle sans d'abord le comprendre. Je vous recommande de parcourir le code ligne par ligne pour comprendre ce qui se passe avant d'utiliser le code.Un téléchargement AJAX est en effet possible avec
XMLHttpRequest()
. Aucun iframes nécessaire. La progression du téléchargement peut être affichée.Pour plus de détails, voir: Répondre à https://stackoverflow.com/a/4943774/873282 à la question progression du téléchargement jQuery et le téléchargement du fichier AJAX .
la source
Voici comment je l'ai fait fonctionner:
HTML
JS
PHP
la source
$('#file')[0].files[0]
forme d'une étrange solution de contournement JS sans nécessiter une bonne<form>
Au cas où vous voudriez le faire comme ça:
que
https://github.com/lgersman/jquery.orangevolt-ampere/blob/master/src/jquery.upload.js
pourrait être votre solution.
la source
Plus de détails sur mon article de blog: http://blog.manki.in/2011/08/ajax-fie-upload.html .
la source
modifier: noter le type de contenu et les données de processus Vous pouvez simplement l'utiliser pour télécharger des fichiers via Ajax ...... soumettre l'entrée ne peut pas être en dehors de l'élément de formulaire :)
la source
Mise à jour 2019:
html
js
views.py
la source
Utilisez FormData. Ça marche vraiment bien :-) ...
la source
J'ai mis en place une sélection de fichiers multiples avec prévisualisation et téléchargement instantanés après avoir supprimé les fichiers indésirables de l'aperçu via ajax.
Une documentation détaillée peut être trouvée ici: http://anasthecoder.blogspot.ae/2014/12/multi-file-select-preview-without.html
Démo: http://jsfiddle.net/anas/6v8Kz/7/embedded/result/
jsFiddle: http://jsfiddle.net/anas/6v8Kz/7/
Javascript:
la source
Je les ai traités dans un code simple. Vous pouvez télécharger une démo fonctionnelle à partir d' ici
Pour votre cas, c'est très possible. Je vais vous expliquer étape par étape comment vous pouvez télécharger un fichier sur le serveur en utilisant AJAX jquery.
Commençons par créer un fichier HTML pour ajouter l'élément de fichier de formulaire suivant, comme indiqué ci-dessous.
Ensuite, créez un fichier jquery.js et ajoutez le code suivant pour gérer notre soumission de fichier au serveur
Voilà. Voir plus
la source
L'utilisation de FormData est la voie à suivre comme l'indiquent de nombreuses réponses. voici un peu de code qui fonctionne très bien à cet effet. Je suis également d'accord avec le commentaire d'imbriquer des blocs ajax pour compléter des circonstances complexes. En incluant e.PreventDefault (); d'après mon expérience, le code est plus compatible avec tous les navigateurs.
la source
Utiliser du js pur c'est plus facile
Voici un extrait plus développé avec gestion des erreurs et envoi json supplémentaire
Afficher l'extrait de code
la source
Oui, vous pouvez simplement utiliser javascript pour obtenir le fichier, en vous assurant de lire le fichier en tant qu'URL de données. Analyser le contenu avant base64 pour obtenir réellement les données encodées en base 64, puis si vous utilisez php ou vraiment n'importe quel langage d'arrière-plan, vous pouvez décoder les données en base 64 et les enregistrer dans un fichier comme indiqué ci-dessous
Bien sûr, vous voudrez probablement faire une validation comme vérifier le type de fichier avec lequel vous traitez et des trucs comme ça, mais c'est l'idée.
la source
la source
Vous pouvez utiliser la méthode ajaxSubmit comme suit :) lorsque vous sélectionnez un fichier qui doit être téléchargé sur le serveur, le formulaire doit être soumis au serveur :)
la source
pour télécharger un fichier qui est soumis par l'utilisateur dans le cadre d'un formulaire utilisant jquery, veuillez suivre le code ci-dessous:
Envoyez ensuite l'objet de données du formulaire au serveur.
Nous pouvons également ajouter un fichier ou un objet blob directement à l'objet FormData.
la source
Si vous souhaitez télécharger un fichier à l'aide d'AJAX, voici le code que vous pouvez utiliser pour le téléchargement de fichiers.
Voici le HTML pour télécharger le fichier
la source
Pour obtenir toutes vos entrées de formulaire, y compris le type = "fichier", vous devez utiliser l' objet FormData . vous pourrez voir le contenu de formData dans le débogueur -> réseau -> En-têtes après avoir soumis le formulaire.
la source
la source
Voici une idée à laquelle je pensais:
Avoir un formulaire dans lequel vous déplacez l'élément INPUT: File vers.
Le résultat sera publié dans le cadre, puis vous pouvez simplement envoyer les données extraites d'un niveau à la balise d'image que vous souhaitez avec quelque chose comme:
et la page se charge.
Je crois que cela fonctionne pour moi, et selon vous, vous pourrez peut-être faire quelque chose comme:
la source