2012-11-02 17 views
10

Sto utilizzando Malsup's jQuery File Upload Progress Bar per visualizzare la barra di avanzamento durante il caricamento dei file sul server. Lo sto usando ora al momento. Ho avuto i seguenti dubbi in questo plugin:Caricamento fallito in PHP utilizzando la barra di avanzamento caricamento file jQuery di Malsup

1) il caricamento di file, anche se la barra di avanzamento non ha raggiunto il 100%

2) Se la dimensione del file è superiore a 10 MB, viene caricato fino a 100% in la barra di avanzamento e gli echi Upload fallito! Messaggio.

Ecco il codice:

<!doctype html> 
<head> 
<title>Uploads</title> 
<style> 
body { padding: 30px } 
form { display: block; margin: 20px auto; background: #eee; border-radius: 10px; padding: 15px } 

.progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; } 
.bar { background-color: #B4F5B4; width:0%; height:20px; border-radius: 3px; } 
.percent { position:absolute; display:inline-block; top:3px; left:48%; } 
</style> 
</head> 
<body> 
    <h1>File Upload</h1> 
    <form action="file.php" method="post" enctype="multipart/form-data"> 
     <input type="file" name="myfile[]" multiple><br> 
     <input type="submit" value="Upload File to Server"> 
    </form> 

    <div class="progress"> 
     <div class="bar"></div > 
     <div class="percent">0%</div > 
    </div> 

    <div id="status"></div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
<script src="http://malsup.github.com/jquery.form.js"></script> 
<script> 
(function() { 

var bar = $('.bar'); 
var percent = $('.percent'); 
var status = $('#status'); 

$('form').ajaxForm({ 
    beforeSend: function() { 
     status.empty(); 
     var percentVal = '0%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
    }, 
    uploadProgress: function(event, position, total, percentComplete) { 
     var percentVal = percentComplete + '%'; 
     bar.width(percentVal) 
     percent.html(percentVal); 
     //console.log(percentVal, position, total); 
    }, 
    complete: function(xhr) { 
     status.html(xhr.responseText); 
    } 
}); 

})();  
</script> 
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> 
<script type="text/javascript"> 
_uacct = "UA-850242-2"; 
urchinTracker(); 
</script> 

L'azione modulo -> codice file.php:

<?php 
$upload_directory = "../users/Files/"; 
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_directory . $_FILES['userfile']['name'])) { 
    print "<br><br>"; 
    print "<font color='black'>File Uploaded Successfully</font>"; 
    print "<br><br>"; 
    print "<font color='black'>Uploaded File is {$_FILES['userfile']['name']} and its size is {$_FILES['userfile']['size']} bytes </font>"; 
} else { 
    print "Upload failed!"; 
} 
?> 

mie impostazioni del server per caricamento di file:

post_max_size   1050M 1050M 

upload_max_filesize 1050M 1050M 

upload_tmp_dir   /tmp /tmp 

Impostazioni in php .ini:

max_execution_time = 30 ; Maximum execution time of each script, in seconds 

max_input_time = -1 

memory_limit = 2000M ; Maximum amount of memory a script may consume (8MB) 

risposta

1

Nella tua pagina php, aggiungi questa riga dopo il tag php.

<?php 
set_time_limit(0); 
+0

Se in realtà è arrivare al punto di lamentarsi l'upload in mancanza, io non sono sicuro che è timeout ... – Telgin

+0

Dopo 30 secondi, lo script php si fermerà anche se non ha caricato il file completo e restituisce la risposta alla funzione ajax che ha fallito. –

+0

@AbhishekSaha, grazie per la risposta. Ho aggiunto questo tag, anche se se il limite di dimensioni del file supera i 10 MB, significa che Caricamento fallito! messaggio .. – highlander141

1

In php.ini v'è un limite di dimensione massima e ho sostituito il file.php per questo:

<?php 
set_time_limit(0); 
$allowedExts = array("jpg", "jpeg", "gif", "png", "rar", "zip", "tgz", "iso", "gz",   "img", "exe",); 
$extension = end(explode(".", $_FILES["file"]["name"])); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "application/rar") 
|| ($_FILES["file"]["type"] == "application/octet-stream") 
|| ($_FILES["file"]["type"] == "image/pjpeg")) 
&& ($_FILES["file"]["size"] < 200000000000000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

    if (file_exists("/var/www/file/upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "/var/www/file/upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "/file/upload/" . $_FILES["file"]["name"]; 

    } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    } 
?> 
1

Hai un errore nel nome del file ... cioè:

<input type="file" name="myfile[]" multiple><br> 

Mentre si sta accedendo in codice php come $_FILES["file"]["type"]. Modificare il nome in file anziché myfile[]. Passare:

<input type="file" name="file" multiple><br> 

Ci sono ancora alcuni più errori però

Problemi correlati