Je veux implémenter un simple téléchargement de fichier dans ma page intranet, avec la plus petite configuration possible.
Voici ma partie HTML:
<input id="sortpicture" type="file" name="sortpic" />
<button id="upload">Upload</button>
et voici mon script jquery JS:
$("#upload").on("click", function() {
var file_data = $("#sortpicture").prop("files")[0];
var form_data = new FormData();
form_data.append("file", file_data);
alert(form_data);
$.ajax({
url: "/uploads",
dataType: 'script',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'post',
success: function(){
alert("works");
}
});
});
Il existe un dossier nommé «uploads» dans le répertoire racine du site Web, avec des autorisations de modification pour «users» et «IIS_users».
Lorsque je sélectionne un fichier avec le formulaire de fichier et que j'appuie sur le bouton de téléchargement, la première alerte renvoie "[object FormData]". la deuxième alerte n'est pas appelée et le dossier "uploads" est vide aussi !?
Quelqu'un peut-il m'aider à découvrir ce qui ne va pas?
La prochaine étape devrait également être de renommer le fichier avec un nom généré côté serveur. Peut-être que quelqu'un peut aussi me donner une solution à ce problème.
Réponses:
Vous avez besoin d'un script qui s'exécute sur le serveur pour déplacer le fichier vers le répertoire de téléchargement. La
ajax
méthode jQuery (exécutée dans le navigateur) envoie les données du formulaire au serveur, puis un script sur le serveur gère le téléchargement. Voici un exemple utilisant PHP.Votre code HTML est correct, mais mettez à jour votre script JS jQuery pour qu'il ressemble à ceci:
Et maintenant pour le script côté serveur, en utilisant PHP dans ce cas.
upload.php : un script PHP qui s'exécute sur le serveur et dirige le fichier vers le répertoire uploads:
En outre, quelques points sur le répertoire de destination:
Et un peu sur la fonction PHP
move_uploaded_file
, utilisée dans le script upload.php :$_FILES['file']['name']
est le nom du fichier tel qu'il est téléchargé. Vous n'êtes pas obligé de l'utiliser. Vous pouvez donner au fichier le nom de votre choix (compatible avec le système de fichiers du serveur):Et enfin, soyez conscient de vos valeurs de configuration PHP
upload_max_filesize
ETpost_max_size
, et assurez-vous que vos fichiers de test ne dépassent pas non plus. Voici quelques conseils sur la manière de vérifier la configuration PHP et de définir la taille maximale des fichiers et les paramètres de publication .la source
form_data.append
fonction. J'ai donc changé le script PHP pour refléter le nouveau nom d'entrée du formulaire. J'ai également extrait la réponse du script PHP dans l'alerte de succès ajax pour aider au débogage.$_FILES['file']
la source
la source
et c'est le fichier php pour recevoir les fichiers uplaoded
la source
if (true)
fait-on? L'évaluation est-elle toujours vraie, donc inutile, n'est-ce pas? Vous avez également un fin bouclé supplémentaire.Utilisez pur js
Le nom de fichier est automatiquement inclus dans la requête et le serveur peut le lire, le 'content-type' est automatiquement défini sur 'multipart / form-data'. Voici un exemple plus développé avec gestion des erreurs et envoi json supplémentaire
Afficher l'extrait de code
la source
Meilleur téléchargement de fichier à l'aide de Jquery Ajax avec Materialise Cliquez ici pour télécharger
Lorsque vous sélectionnez l'image, l'image sera convertie en base 64 et vous pouvez la stocker dans la base de données afin qu'elle soit également légère.
la source