Je ne sais pas comment Ajax télécharge plusieurs images et les envoie en arrière-plan.
Pour une seule image, vous pouvez utiliser la base64 pour l'envoyer au backend, mais si vous avez plusieurs images, cette méthode ne convient pas car la base64 sera très volumineuse.
Comment est-il envoyé au backend ? Si l’arrière-plan est PHP, comment le reçoit-il ?
Selon la méthode des commentaires, j'ai évidemment choisi 2 photos à télécharger. Pourquoi un seul fichier est affiché en arrière-plan ?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="//cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<form id="form">
<input type="file" multiple="" name="file">
<button id="btn" type="button">上传</button>
</form>
<script>
document.getElementById('btn').onclick = () => {
$.ajax({
url: './test.php',
type: 'POST',
dataType: 'text',
data: new FormData(document.getElementById('form')),
processData: false,
contentType: false,
})
.done(function(data) {
console.log(data);
})
}
</script>
</body>
</html>
Il est préférable d'utiliser un formulaire. La raison pour laquelle vous choisissez l'ajax direct est probablement parce que vous ne souhaitez pas actualiser la page.
Dans ce cas, vous pouvez utiliser formdata pour la soumission ajax. Vous pouvez voir l'exemple pour plus de détails. Sa fonction principale est de Le contenu du champ de formulaire est encapsulé dans les données du formulaire puis soumis en utilisant ajax. Le nom du contrôle de formulaire correspond au nom du paramètre d'arrière-plan. Comme pour plusieurs images, utilisez simplement un ensemble. d'entrées portant le même nom. Vous trouverez ci-dessous les js et les rendus. Si vous ne comprenez toujours pas, vous pouvez demander.
http://www.jianshu.com/p/756e...
Plusieurs images sont simplement ajoutées à FormData
Utilisez simplement FormData pour soumettre
https://developer.mozilla.org...
L'essentiel est d'ajouter le fichier à télécharger à formData
Comment l'obtenir sur le backend (php : à l'intérieur de $_FILES)
Il semble que l'intention initiale de la personne qui a posé la question était que partager tout cela serait trop gros ? Vous pouvez les transmettre un par un et réessayer si vous échouez, le coût de mise en œuvre est donc faible.