2015-11-25 1 views
0

J'essaie de télécharger un fichier via session.upload_progress.name - cela fonctionne très bien sur certains fichiers, mais si un fichier est "plus grand" f.ex. 13 Mo, le script s'arrête. Le problème n'est pas à cause de la taille du fichier - c'est plus sur la limite de temps je pense. Si j'utilise une connexion Internet plus rapide, cela fonctionne bien. Mon hébergeur est Strato - est-ce que quelqu'un a une solution?PHP Télécharger un fichier via session.upload_progress.name

Ceci est mon code:

<?php session_start(); 
?> 

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Upload CSV Dateien</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    <script src="jquery.form.js"></script> 
</head> 

<body> 
    <article> 
     <header> 
      <h1>UPLOAD Import Dateien</h1> 
     </header> 

     <section> 
      <form action="upload.php" method="post" enctype="multipart/form-data" id="upload_form"> 
      <!-- 
       Dieses Feld ist wichtig. PHP benötigt dies für die Zuordnung. 
       Der Wert (Value) ist für uns später wichtig um auf die globale $_SESSION zuzugreifen 
      --> 
       <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="test"> 
       <div> 
        <label for="datei1">Bitte Datei zum hochladen auswählen: </label> 
        <p></p> 
        <input name="file1" type="file" id="datei1"> 
       </div> 
       <div> 
        <input name="upload_start" type="submit" value="Hochladen"> 
        <input name="abbrechen" type="button" value="Abbrechen" id="abbrechen"> 
       </div> 
      </form> 
     </section> 

     <section> 
      <div> 
       <progress max="1" value="0" id="fortschritt"></progress> 
       <p id="fortschritt_txt"></p> 
      </div> 
     </section> 
    </article> 

    <script> 

     var intervalID = 0; 

     $(document).ready(function(e) { 

      $('#upload_form').submit(function(e) { 

       if($('#datei1').val() == ''){ 
        e.preventDefault(); //Event abbrechen 

        return false; 
       } 

       intervalID = setInterval(function() { 
        $.getJSON('fortschritt.php', function(data){ 

         if(data) 
         { 
          $('#fortschritt').val(data.bytes_processed/data.content_length); 
          $('#fortschritt_txt').html('Fortschritt '+ Math.round((data.bytes_processed/data.content_length)*100) + '%'); 
         } 
        }); 
       }, 1000); //Zeitintervall auf 1s setzen 

       $('#upload_form').ajaxSubmit({  
               success: function() 
               { 
                $('#fortschritt').val('1'); 
                $('#fortschritt_txt').html('Fertig'); 
                clearInterval(intervalID); 
                location.reload(); 
               },             
               error: function() 
               { 
                $('#fortschritt').val('1'); 
                $('#fortschritt_txt').html('Ein Fehler ist aufgetreten'); 
                clearInterval(intervalID);  
               } 
              }); 
       e.preventDefault(); //Event Abbrechen 

      }); 

      $('#abbrechen').click(function(e) { 
       $.ajax("fortschritt.php?cancel=true"); 
       $('#fortschritt').val('1'); 
       $('#fortschritt_txt').html('Upload abgebrochen'); 

       clearInterval(intervalID); 
      }); 
     }); 

    </script> 

</body> 
</html> 

Et ce sont upload.php

<?php 

session_start(); 

/* 
* Session-Upload-Progress ist leer 
* durch die Option session.upload_progress.enabled = On 
*/ 
var_dump($_SESSION); 

/* 
* Übliches Format von $_FILES 
*/ 
var_dump($_FILES); 

move_uploaded_file($_FILES['file1']['tmp_name'],'../import/'.$_FILES['file1']['name']); 

/* 
* Wenn abgebrochen 
*/ 
if($_FILES['error'] == UPLOAD_ERR_EXTENSION) 
    echo "Datei abgebrochen"; 
?> 

Répondre

0

S'il vous plaît mettre set_time_limit à 0 avant de commencer le téléchargement de fichiers et il sera mis à exécution en temps illimité et le script ne s'arrête pas jusqu'à la fin du téléchargement. . (Mais il est préférable de fixer une limite de temps pour le téléchargement pour éviter les problèmes de serveur

set_time_limit(0); 
+0

J'editet mon post - où dois-je ajouter cette set_time_limit Je l'ai essayé de le mettre au début du téléchargement?. php, mais sans succès – LJSven

+0

mettre le code après session_start – akhilp2255

+0

dans quel fichier? upload.php? Je l'ai essayé sans succès – LJSven