Dans l'interface de gestion des plug-ins de la gestion en arrière-plan de WordPress, je souhaite ajouter un téléchargement ajax sans rafraîchir Permettez-moi d'abord de parler de l'idée : pour télécharger un fichier, vous devez obtenir. le flux de données du fichier actuel, puis passez La méthode post ajax est envoyée au serveur pour traitement.
(1) Comment obtenir le flux de données du fichier actuel ?
Réponse : Ajouter les données du fichier dans une variable via l'objet instancié par FormData()
(2) Comment obtenir les données ?
Réponse : Dans le formulaire de saisie de type file, il est livré avec un attribut files.
La page HTML envoie une demande de téléchargement de fichier :
<input type="file" name="upload_img" id='upload_img'/> <img src="" id='myfile_img' alt='' title='' width='300'/> <script type="text/javascript"> var uploadImg = document.getElementById('upload_img'); var myfileImg = document.getElementById('myfile_img'); uploadImg.onchange = function() { var imgName = this.files[0].name; //let reader = new FileReader(); var fordata = new FormData(); fordata.append('my_file',this.files[0]); //向服务器发送文件数据 ajaxPost(fordata,function(obj){ var content = JSON.parse(obj.response); console.log(content); if(content.status == 'sucess'){ myfileImg.src = './images/'+imgName; } }); } function ajaxPost(data,fn) { var xhr = new XMLHttpRequest(); xhr.open('post','./upload.php','true'); xhr.send(data); xhr.onload = function() { fn(this); } } </script>
Le serveur traite les données du fichier et génère le fichier téléchargé :
$success = array('status' => 'sucess', 'code' => '1'); $error = array('status' => 'error', 'code' => '0'); if (!empty($_FILES)) { $file = $_FILES['my_file']; $new_file_dir = dirname(__FILE__) . '/images/' . $file['name']; @move_uploaded_file($file['tmp_name'], $new_file_dir); exit(json_encode($success)); } else { exit(json_encode($error)); }
Recommandations associées :
Introduction à la méthode de téléchargement de fichiers sans actualisation à l'aide de JavaScript
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!