अपलोड प्रगति पट्टी का कार्यान्वयन आसान है और इसके लिए किसी अतिरिक्त PHP एक्सटेंशन, जावास्क्रिप्ट या फ्लैश की आवश्यकता नहीं है। लेकिन आपको PHP 5.4 और नए की आवश्यकता है ।
आपको निर्देश session.upload_progress.enabled
को On
इन पर सेट करके अपलोड प्रगति की जानकारी एकत्र करने में सक्षम करना है php.ini
।
फिर किसी अन्य फ़ाइल इनपुट से ठीक पहले HTML अपलोड फॉर्म में एक छिपा हुआ इनपुट जोड़ें । name
उस छिपे हुए इनपुट की एचटीएमएल विशेषता निर्देश के मूल्य session.upload_progress.name
से php.ini
(अंत में पूर्ववर्ती session.upload_progress.prefix
) जैसी ही होनी चाहिए । value
विशेषता यह सत्र कुंजी के हिस्से के रूप में इस्तेमाल किया जाएगा, आप पर निर्भर है।
HTML फॉर्म इस तरह दिख सकता है:
<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>
जब आप यह फ़ॉर्म भेजते हैं, तो PHP को $_SESSION
सुपरग्लोबल संरचना में एक नई कुंजी बनानी चाहिए जो अपलोड स्थिति की जानकारी के साथ पॉपुलेटेड होगी। कुंजी संक्षिप्त name
और value
छिपी इनपुट की है।
PHP में आप पॉपुलेटेड अपलोड जानकारी पर एक नज़र डाल सकते हैं:
var_dump($_SESSION[
ini_get('session.upload_progress.prefix')
.ini_get('session.upload_progress.name')
.'_myupload'
]);
आउटपुट निम्न के समान दिखाई देगा:
$_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,
)
)
);
प्रगति बार बनाने के लिए आवश्यक सभी जानकारी है - आपके पास जानकारी है यदि अपलोड अभी भी प्रगति पर है, तो कुल कितनी बाइट हस्तांतरित होने जा रही हैं और कितने बाइट पहले ही हस्तांतरित हो चुकी हैं।
उपयोगकर्ता को अपलोड प्रगति प्रस्तुत करने के लिए, अपलोड करने की तुलना में एक और PHP स्क्रिप्ट लिखें, जो केवल सत्र में अपलोड जानकारी को देखेगा और उदाहरण के लिए, इसे JSON प्रारूप में वापस कर देगा। इस स्क्रिप्ट को समय-समय पर कहा जा सकता है, उदाहरण के लिए हर सेकंड, AJAX और उपयोगकर्ता को प्रस्तुत जानकारी का उपयोग करके।
तुम भी निर्धारित करके अपलोड रद्द करने में सक्षम हैं $_SESSION[$key]['cancel_upload']
करने के लिए true
।
विस्तृत जानकारी के लिए, अतिरिक्त सेटिंग्स और उपयोगकर्ता की टिप्पणियां PHP मैनुअल देखती हैं ।