Faites-moi savoir si quelqu'un sait quel est le problème avec ce code.
En gros, je veux télécharger un fichier en utilisant jQuery
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(event) {
$('#form1').submit(function(event) {
event.preventDefault();
$.post('post.php',function(data){
$('#result').html(data);
});
});
});
</script>
</head>
<body>
<form id="form1">
<h3>Please input the XML:</h3>
<input id="file" type="file" name="file" /><br/>
<input id="submit" type="submit" value="Upload File"/>
</form>
<div id="result">call back result will appear here</div>
</body>
</html>
et mon php 'post.php'
<?php
echo $file['tmp_name'];
?>
Le nom du fichier téléchargé n'est pas renvoyé. Le problème est que je ne pouvais pas accéder au fichier téléchargé.
Merci d'avance! Shiv
En gros, je veux télécharger un fichier en utilisant jQuery
Vous ne pouvez pas télécharger de fichiers avec AJAX. Vous pouvez utiliser le plugin jquery.form qui utilise un iframe caché:
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="http://malsup.github.com/jquery.form.js"></script>
<script type="text/javascript">
$(document).ready(function(event) {
$('#form1').ajaxForm(function(data) {
$('#result').html(data);
});
});
</script>
</head>
<body>
<form id="form1" action="post.php" method="post" enctype="multipart/form-data">
<h3>Please input the XML:</h3>
<input id="file" type="file" name="file" /><br/>
<input id="submit" type="submit" value="Upload File"/>
</form>
<div id="result">call back result will appear here</div>
</body>
</html>
Notez également le enctype="multipart/form-data"
sur le formulaire.
Une autre possibilité consiste à utiliser le fichier HTML5 File API qui vous permet de réaliser cela en supposant que le navigateur client le supporte.
Il n'est pas possible de télécharger des fichiers avec jQuery $ .post, néanmoins, avec l'API de fichier et XMLHttpRequest, il est parfaitement possible de télécharger un fichier au format AJAX, et vous pouvez même savoir combien de données ont déjà été téléchargées…
$('input').change(function()
{
var fileInput = document.querySelector('#file');
var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload/');
xhr.upload.onprogress = function(e)
{
/*
* values that indicate the progression
* e.loaded
* e.total
*/
};
xhr.onload = function()
{
alert('upload complete');
};
// upload success
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
{
// if your server sends a message on upload sucess,
// get it with xhr.responseText
alert(xhr.responseText);
}
var form = new FormData();
form.append('title', this.files[0].name);
form.append('pict', fileInput.files[0]);
xhr.send(form);
}
Non non non, vous devez utiliser un plugin de formulaire jQuery pour le téléchargement asynchrone de fichiers. Vous ne pouvez pas télécharger de fichier avec la méthode jQuery $ .post. Le fichier sera chargé avec iframe caché
Une autre méthode consiste à utiliser le téléchargement HTML5 avec FileAPI/BlobApi.
Votre upload.php a une erreur.
vous devriez changer votre cette partie.
echo $file['tmp_name'];
à:-
echo $_FILES['file']['tmp_name'];
Essayez de télécharger avec un iframe car vous ne pouvez pas envoyer de fichier avec la méthode $ .post.