Delay progress bar 100% si mesaj final in script upload
Scris: Sâm Noi 18, 2017
La un scrip php /js de upload.
Codul php:
- Am mici probleme cu procentul in progress bar. am incercat sa modific ce aveam si am ajuns la rezultatul final :
Cand se face 100%, exista oarecum un delay intre 100% si mesajul final.
Sa facut 100% si dureaza cateva fractiuni de secunde sa apara mesajul final "Sa incarcat poza, bla bla bla"
Si cateodata dupa ce apare mesajul final, dispare imediat, abia vezi ca aparut mesajul final si dispare inainte sa apuci sa citesti 2 cuvinte din el.
Codul php:
Cod: Selectaţi tot
session_start();
if(isset($_SESSION['nume']))
{
$savefolder = 'poza-profil';
$max_size = 5000;
$allowtype = array('jpg', 'jpeg');
$rezultat = '';
// Daca este primit din formular un fisier valid
if(isset($_FILES['myfile']))
{ // daca nu e selectat nici un fisier sa dea eroare
if($_FILES['myfile']['name'] == '')
{ $rezultat = '<img src=/imagini/stare-error.png> <font color=red>Alege o poza!</font>'; }
// daca e selectat fisieru, spor la incarcat
else if(strlen($_FILES['myfile']['name']) > 2)
{
if(isset($_FILES['myfile'])) {
// Verifica daca fisierul are tipul de extensie permis
$type = end(explode(".", strtolower($_FILES['myfile']['name'])));
if (in_array($type, $allowtype)) {
// Verifica daca fisierul are marimea permisa
if ($_FILES['myfile']['size']<=$max_size*1000) {
// Daca nu sunt erori in procesul de copiere
if ($_FILES['myfile']['error'] == 0) {
// Seteaza locatia si numele pt. incarcare pe server
$id = $_SESSION['id'];
$folder = 'poza-profil/';
$thefile = $folder . $id. '.0.'. $type;
// redimensionare poza //
function fn_resize($image_resource_id,$width,$height) {
$target_width =1000;
$target_height =1000;
$target_layer=imagecreatetruecolor($target_width,$target_height);
imagecopyresampled($target_layer,$image_resource_id,0,0,0,0,$target_width,$target_height, $width,$height);
return $target_layer;
}
$source_properties = getimagesize($_FILES['myfile']['tmp_name']);
list($width, $height) = getimagesize($_FILES['myfile']['tmp_name']);
$file_width=$width;
$file_height=$height;
if($source_properties[0] > 1000 AND $source_properties[1] > 1000) {
$image_resource_id = imagecreatefromjpeg($_FILES['myfile']['tmp_name']);
$target_layer = fn_resize($image_resource_id,$source_properties[0],$source_properties[1]);
if(!imagejpeg($target_layer, $thefile))
{
$rezultat = '<img src=/imagini/stare-error.png>
Sa intamplat ceva, nu stiu ce este, revin-o peste cateva minute pentru a
schimba poza de profil! Daca problema persista contacteaza-ne!';
}
else {
// Returneaza succes
$rezultat = '<img src=/imagini/stare-succes.png>
<font color=green>Poza ta de profil a fost incarcata cu succes, aceasta va aparea pe site dupa ce o va
aproba un administrator al site-ului, daca aceasta respecta Termenii si conditiile site-ului!</font>';
}
}
// end redimensionare poza //
}
}
}
else { $rezultat = '
<br><font color=red> <img src=/imagini/stare-error.png>
Fisierul <font color=blue>'. $_FILES['myfile']['name']. '</font>
nu are tipul de extensie permis, se accepta doar format .jpg sau .jpeg de maxim 5 MB</font>'; }
}
}
}
}
// daca e delogat sa dea eroare //
else
{
$rezultat = '<img src=/imagini/stare-error.png> <font color=red>Pentru a schimba poza de profil trebuie sa fi logat pe site. Reincarca aceasta pagina !!!</font>';
}
// Codeaza cu 'urlencode()' variabila $rezultat si o returneaza in 'onload', intr-un tag BODY
$rezultat = urlencode($rezultat);
echo '<body onload="parent.doneloading(\''.$rezultat.'\')"></body>';
Cod: Selectaţi tot
function uploadimg(theform){
var file = $('#myfile').val();
if(file.length == 0)
{ $('#upload_info').html('<font color="red">Selecteaza un fisier</font>'); }
else {
theform.submit();
// progres bar //
var bar = $('.upload_info');
var percent = $('.upload_info');
var status = $('#upload_info');
$('form').ajaxSubmit({
beforeSend: function() {
status.empty();
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal, "upload_info");
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal, "upload_info");
},
complete: function(xhr) {
bar.width("100%");
percent.html("100%");
status.html(xhr.responseText, "upload_info");
}
});
return false;
// end progres bar //
}
}
function doneloading(rezultat) {
rezultat = decodeURIComponent(rezultat.replace(/\+/g, " "));
document.getElementById('upload_info').innerHTML = rezultat;
}
function setStatus(theStatus, theloc) {
var tag = document.getElementById(theloc);
if (tag) {
tag.innerHTML = '<b>'+ theStatus + "</b>";
}
}
Sa facut 100% si dureaza cateva fractiuni de secunde sa apara mesajul final "Sa incarcat poza, bla bla bla"
Si cateodata dupa ce apare mesajul final, dispare imediat, abia vezi ca aparut mesajul final si dispare inainte sa apuci sa citesti 2 cuvinte din el.