Yükleme ilerleme çubuğunun uygulanması kolaydır ve herhangi bir ek PHP uzantısı, JavaScript veya Flash gerektirmez. Ancak PHP 5.4 ve daha yenisine ihtiyacınız var .
Sen direktifini ayarlayarak yükleme ilerleme bilgilerinin toplanması sağlamak zorunda session.upload_progress.enabled
için On
de php.ini
.
Ardından, diğer dosya girişlerinden hemen önce HTML yükleme formuna gizli bir giriş ekleyin . HTML özelliği name
bu gizli girdinin direktifin değeri ile aynı olmalıdır session.upload_progress.name
dan php.ini
(sonunda öncesinde session.upload_progress.prefix
). value
Özniteliği oturum anahtarının bir parçası olarak kullanılacaktır, size kalmış.
HTML formu şöyle görünebilir:
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="<?php echo ini_get('session.upload_progress.prefix').ini_get('session.upload_progress.name'); ?>" value="myupload" />
<input type="file" name="file1" />
<input type="submit" />
</form>
Bu formu gönderdiğinizde, PHP $_SESSION
, karşıya yükleme durumu bilgileriyle doldurulacak süper küresel yapıda yeni bir anahtar oluşturmalıdır . Anahtar sıralı name
ve value
gizli girdidir.
PHP'de doldurulmuş yükleme bilgilerine göz atabilirsiniz:
var_dump($_SESSION[
ini_get('session.upload_progress.prefix')
.ini_get('session.upload_progress.name')
.'_myupload'
]);
Çıktı aşağıdakine benzer şekilde görünecektir:
$_SESSION["upload_progress_myupload"] = array(
"start_time" => 1234567890,
"content_length" => 57343257,
"bytes_processed" => 54321,
"done" => false,
"files" => array(
0 => array(
"field_name" => "file1",
"name" => "filename.ext",
"tmp_name" => "/tmp/phpxxxxxx",
"error" => 0,
"done" => false,
"start_time" => 1234567890,
"bytes_processed" => 54321,
)
)
);
Bir ilerleme çubuğu oluşturmak için gereken tüm bilgiler vardır - yükleme hala devam ediyorsa, toplamda kaç baytın aktarılacağı ve halihazırda kaç baytın aktarıldığı bilgisine sahipsiniz.
Yüklemenin ilerlemesini kullanıcıya sunmak için, karşıya yüklemeden başka bir PHP betiği yazın; bu, yalnızca oturumdaki yükleme bilgilerine bakacak ve bunu JSON biçiminde döndürecektir. Bu komut dosyası, AJAX ve kullanıcıya sunulan bilgiler kullanılarak periyodik olarak, örneğin her saniye çağrılabilir.
Hatta ayarlayarak yüklemeyi iptal edebiliyoruz $_SESSION[$key]['cancel_upload']
To true
.
Ayrıntılı bilgi, ek ayarlar ve kullanıcı yorumları için PHP kılavuzuna bakın .