A
nul.
.
session.upload_progress.name
-
HORS SRI
46 phpsolmag.org/fr
Barre de progression
6OQSYFVUJMJTQPVSMBDMEFMBQSPHSFTTJPO upload_progress_
du tlchargement dans la variable super-global
$ _ SESSION
. $_POST[ini_get(session.upload_progress.name)]); $_
var_dump($_SESSION[$sSessionKey]); SESSION[$sSessionKey][cancel_upload] la valeur TRUE.
-
-
fert. -
<?php
$_SESSION[upload_progress_NON_DE_VOTRE_SESSION] = array(
start_time => 1234567890, // Lheure de la requte
content_length => 57343257, // Longueur du contenu POST
bytes_processed => 453489, // Quantit doctets reus et traits
done => false, // TRUE lorsque le gestionnaire POST a termin avec succs, sinon FALSE
0 => array(
),
)
);
HORS SRI
phpsolmag.org/fr 47
POUR LES DBUTANTS
<?php
/**
* Check the version of PHP
*/
if (version_compare(phpversion(), 5.4.0, <))
/**
* Check if session upload progress is enabled
*/
if (!intval(ini_get(session.upload_progress.enabled)))
this script.);
require_once Upload.class.php;
?>
<!DOCTYPE html>
<html lang=en-US>
<head>
<meta charset=utf-8 />
<title>PHP 5.4 Session Upload Progress Bar Demo</title>
<meta name=description content=PHP 5.4 Session Upload Progress Bar />
<meta name=keywords content=PHP, session, upload, progress bar />
<meta name=author content=Pierre-Henry Soria />
<link rel=stylesheet href=./static/css/common.css />
</head>
<div id=container>
<header>
</header>
<legend>Upload Images</legend>
<input type=hidden name=<?php echo ini_get(session.upload_progress.name);?> value=<?php
CTRL key.</em></small></label>
<button type=submit id=upload>Upload!</button>
<button type=reset id=cancel>Cancel Upload</button>
</form>
<footer>
</footer>
HORS SRI
48 phpsolmag.org/fr
Barre de progression
</div>
<script>
$(#upload).click(function() {
(new UploadBar).upload();
});
$(#cancel).click(function() {
(new UploadBar).cancel();
});
</script>
</html>
<form action=upload.php?show_transfer=on
- method=post id=upload_form
enctype=multipart/form-data target=result_frame>
le serveurs. -
-
$_SESSION et
ainsi que lattribut multiple (disponible depuis HTML5) $_FILES
-
upload()
addFile() progress()
-
for. Voir Listing 4.
accept cancel() -
image/* - fadeOut()
faire disparaitre la barre de progression.
progress()
- upload()
- show()
bilit hidden pour quelle ne soit pas visible par dfaut.
Par la suite, nous allons la rendre visible pendant le resetProgressBar() est utili-
se par upload() et cancel() pour rinitialiser la barre de
progression 0%
oMe faisant ap-
de la page. pel la variable this
HORS SRI
phpsolmag.org/fr 49
POUR LES DBUTANTS
Listing 3. upload.php
<?php
require_once Upload.class.php;
/**
<?php
class Upload
{
private $_aErrFile = [
];
$this->_sUploadDir = ./uploads/;
/**
// You can also retrieve the session this way.
upload_progress.name)]);
*/
}
/**
* @return integer Percentage increase.
*/
public function progress()
{
if(!empty($_SESSION[$this->_sProgressKey]))
{
$aData = $_SESSION[$this->_sProgressKey];
$iProcessed = $aData[bytes_processed];
HORS SRI
50 phpsolmag.org/fr
Barre de progression
$iLength = $aData[content_length];
$iProgress = ceil(100*$iProcessed / $iLength);
}
else
{
$iProgress = 100;
}
return $iProgress;
}
/**
*/
public function addFile()
{
if(!empty($_FILES))
{
$this->_sMsg = ;
$sFileName = $aFiles[name][$i];
$sTmpFile = $aFiles[tmp_name][$i];
$sFileDest = $this->_sUploadDir . $sFileName;
$sTypeFile = $aFiles[type][$i];
/**
*/
{
if($iErrCode == UPLOAD_ERR_OK)
{
}
else
{
}
}
else
{
HORS SRI
phpsolmag.org/fr 51
POUR LES DBUTANTS
}
}
}
}
else
{
}
return $this;
}
/**
*/
public function show()
{
ob_start();
var_dump($_FILES);
echo </pre>;
var_dump($_SESSION);
echo </pre>;
$this->_sMsg = ob_get_clean();
return $this;
}
/**
*/
public function cancel()
{
if (!empty($_SESSION[$this->_sProgressKey]))
$_SESSION[$this->_sProgressKey][cancel_upload] = true;
return $this;
}
/**
*
* @param integer $iStatus, 1 = success, 0 = error
*/
}
/**
*
* @return string
*/
public function __toString()
{
return $this->_sMsg;
}
HORS SRI
52 phpsolmag.org/fr
Barre de progression
Listing 5. Classe UploadBar.class.js pour rcuprer les informations sur la progression en AJAX
function UploadBar()
{
this.upload = function()
{
this.resetProgressBar();
this.cancel = function()
{
{
console.log(Upload cancelled);
});
this.resetProgressBar();
$(#upload_progress).delay(2000).fadeOut();
};
this.progress = function()
{
{
var sPercentage = iPercentage + %;
$(#upload_progress).show();
$(#upload_progress .bar).html(sPercentage);
$(#upload_progress .bar).width(sPercentage);
this.resetProgressBar = function()
{
$(#upload_progress .bar).html(0%);
$(#upload_progress .bar).width(0%);
};
HORS SRI
phpsolmag.org/fr 53
POUR LES DBUTANTS
$oUpload->cancel();
break;
}
Figure 1. Fichier en cours de tlchargement... Figure 2. Barre de progression gnre laide de PHP 5.4 et de jQuery
Dpannage
$_SESSION -
HORS SRI
54 phpsolmag.org/fr