我们通过安装PECL延伸码<>pecl-uploadprogress,实施了这一非常简单的做法,并在表格上添加了一个简单的AJAX呼号:
1. 产生上载钥匙:
$upload_id = genUploadKey();
function genUploadKey ($length = 11) {
$charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for ($i=0; $i < $length; $i++)
$key .= $charset[(mt_rand(0,(strlen($charset)-1)))];
return $key;
}
创建美国宇宙航空研究开发机构后备手(例如,上载推进器):
extract($_REQUEST);
// servlet that handles uploadprogress requests:
if ($upload_id) {
$data = uploadprogress_get_info($upload_id);
if (!$data)
$data[ error ] = upload id not found ;
else {
$avg_kb = $data[ speed_average ] / 1024;
if ($avg_kb<100)
$avg_kb = round($avg_kb,1);
else if ($avg_kb<10)
$avg_kb = round($avg_kb,2);
else $avg_kb = round($avg_kb);
// two custom server calculations added to return data object:
$data[ kb_average ] = $avg_kb;
$data[ kb_uploaded ] = round($data[ bytes_uploaded ] /1024);
}
echo json_encode($data);
exit;
}
// display on completion of upload:
if ($UPLOAD_IDENTIFIER) {
...
下载图书馆和j Query.uploadprogress 图书馆(也包括上述幻灯片),并采用以下形式:
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="jquery.uploadprogress.0.3.js"></script>
<script type="text/javascript">
jQuery(function () {
// apply uploadProgress plugin to form element
// with debug mode and array of data fields to publish to readout:
jQuery( #upload_form ).uploadProgress({
progressURL: uploadprogress.php ,
displayFields : [ kb_uploaded , kb_average , est_sec ],
start: function() {
$( .upload-progress ).show();
},
success: function() {
$( .upload-progress ).hide();
jQuery(this).get(0).reset();
}
});
});
</script>
在您的上载表格中添加:
<input name="UPLOAD_IDENTIFIER" type="hidden" value="$upload_id" />
这应当做到。 这是从我们的法典基础中提取的,可能无法外出。 但是,它应当告诉大家这一想法。