2017-08-01 7 views
0

J'ai créé un formulaire avec une barre de progression de téléchargement de fichier. J'utilise ajaxForm pour définir les actions pré/post. Une fois le processus de téléchargement terminé, je souhaite générer une nouvelle page Web et envoyer un courrier électronique en appelant "sendEmail.php". Le problème est que je peux voir le fichier de progression atteindre 100% mais rien ne se passe après cela. Il est collé sur 100% J'ai 2 question:ajaxForm - "uploadProgress" affiche la progression même si php pour télécharger le fichier n'existe pas

  1. quand je testais cela, je remarqué que l'action - « upload.php » était absent et pourtant je vis une barre de progression qui a été proportionnellement aux comporte fichiers Taille. pourquoi est-ce? Qu'est-ce qui était en train de télécharger le fichier? Lorsque j'ai ajouté le fichier UPLOAD.php, il ne fonctionnait toujours pas.

Ma forme ligne de création ressemble à ceci:

<form id="formmail" class="form-horizontal col-xs-6 col-sm-6 col-md-4 col-sm-offset-1" name="formmail" method="POST" action="**UPLOAD.php**" enctype="multipart/form-data"> 

Mon script pour générer la barre de progression:

var progress 

$(document).ready(function() { 
    $("#submit").click(function(){ 
     $("#formmail").ajaxForm({ 
      type: "POST", 
      url: "sendEmail.php", 
      beforeSend: function() { 
       $("#progressBar").removeClass("hidden"); 
       progress = "0%"; 
       $('.progress-bar').css("width", progress); 
       $('.progress-bar').html(progress); 
      }, 
      uploadProgress: function (event, position, total, percentComplete) { 
       progress = percentComplete + "%"; 
       $('.progress-bar').css("width", progress); 
       $('.progress-bar').html(progress); 
      }, 
      success: function (data){ 
       alert("It's OK!"); 
      }, 
     }).submit(); 
    }); 
}); 

Le PHP pour télécharger le fichier, dans ce cas seulement télécharger. Je vais déplacer le fichier une fois qu'il fonctionne.

<?php 
    if(isset($_POST) && !empty($_FILES['fileatt']['name'])){ 
    $tmp = $_FILES['fileatt']['tmp_name']; 
    echo "echo something"; 
?> 
+0

Lorsque vous ne définissez pas l'action pour un formulaire, la valeur par défaut est la page Web en cours. Le fichier est téléchargé si cette page peut le gérer ou non, ce qui explique pourquoi vous avez vu la progression en fonction de la taille du fichier. Quel est le résultat de 'print_r()' pour $ _FILES'? Pour le voir, vous devrez peut-être 'fichier_put_contents' les données (n'oubliez pas de mettre le deuxième argument de' print_r() 'à' true' sinon les données ne seront pas sauvegardées dans le fichier.) – JBH

+0

merci, je suis nouveau à cela - pourriez-vous être plus précis s'il vous plaît, peut-être un petit exemple? –

Répondre

0

Ce n'est pas une réponse tant que c'est un commentaire étendu ...

Nous avons besoin de savoir si le fichier téléchargé est réellement arrivée. Par conséquent, faites-en la première ligne de votre fichier upload.php. Je suppose que votre serveur Web dispose d'autorisations d'écriture sur le répertoire où upload.php est exécuté. Si ce n'est pas le cas, vous devrez indiquer un chemin vers un répertoire dans lequel il peut écrire. Généralement, le répertoire au-dessus de DOCUMENT_ROOT peut être écrit.

Si le téléchargement échoue complètement (aucun fichier n'est reçu), vous verrez un tableau vide. S'il réussit, vous verrez le nom du fichier téléchargé et un tas d'autres informations. S'il réussit, le problème consiste simplement à gérer correctement le fichier.