
प्रस्तावना
मैंने इससे पहले इस बारे में नहीं सोचा था और फ़ाइलों को अपलोड करने के लिए ड्रुपल जैसे तैयार समाधान का उपयोग किया था, और मुझे इसकी अधिक आवश्यकता नहीं थी। कुछ महीने पहले तक मुझे न केवल फाइलें देने की तत्काल आवश्यकता थी।
इंटरनेट पर सर्वर से फ़ाइलों को डाउनलोड करने और सर्वर पर फ़ाइलों को अपलोड करने के बारे में बहुत सारी जानकारी है, साथ ही साथ सर्वरों के बीच भी। लेकिन कहीं भी एक सरल समाधान नहीं है जो कम या ज्यादा सार्वभौमिक होगा।
मैंने कई दिनों तक हेडर के सभी प्रकारों को सीखने और सीयूआरएल का उपयोग करने के विविधताओं को मार डाला, लेकिन सब कुछ एक साथ रखकर काम नहीं किया। मैंने कई अलग-अलग वर्गों को देखा, लेकिन हर जगह या तो आंशिक समाधान था, या बहुत भ्रामक था, या दोनों।
और केवल एकल लेख, मंचों से जानकारी के टुकड़े और सभी प्रकार की टिप्पणियों के लिए धन्यवाद, हम पहेली को एक साथ रखने में कामयाब रहे। मैं यह दावा नहीं करता कि मेरा समाधान पूरी तरह से सार्वभौमिक है, लेकिन कई मामलों में बहुत सुविधाजनक है, हालांकि यह आप पर निर्भर है।
यदि किसी को इस मुद्दे पर मेरे समाधान में सुधार करने की इच्छा है और इस दिशा में ज्ञान का अभाव है, तो मुझे खुशी होगी अगर आप GitHub पर सार्वजनिक रूप से उपलब्ध कोड के लिए कोई सुधार या परिवर्धन करेंगे।
और अब इस बिंदु पर, कार्गाडे वर्ग के कार्य:
- फ़ाइल को ब्राउज़र पर स्टोरेज लोकेशन दिखाए बिना और फिर से शुरू होने की संभावना के साथ अपलोड करें;
- प्रगति संकेतक के साथ एक ब्राउज़र के माध्यम से सर्वर पर एक फ़ाइल अपलोड करना;
- एक दूरस्थ सर्वर से अपने सर्वर पर प्रगति संकेतक के साथ फाइल डाउनलोड करना;
- प्रगति संकेतक के साथ अपने सर्वर से दूरस्थ सर्वर पर फ़ाइलें अपलोड करें।
सबसे पहले आपको CargaDes क्लास को डाउनलोड और कनेक्ट करना होगा:
1. फिर से शुरू और गति नियंत्रण की क्षमता के साथ अपने भंडारण स्थान को दिखाए बिना ब्राउज़र के माध्यम से फ़ाइल अपलोड करें
$realFilePath = dirname( __FILE__ ) . '/file.zip';
यह विधि द्रुपाल और उसके ilk के समान है:
$CargaDes = new CargaDes; $client_d = new ClientD($realFilePath);
मैंने अपाचे के साथ अधिक किकबैक जोड़ा, लेकिन XSendFile निर्देशन में सक्षम होना चाहिए
$client_d->apache = false;
विधि को निष्पादित करने के तुरंत बाद, ब्राउज़र फ़ाइल को सहेजने के लिए एक विंडो प्रदर्शित करेगा
2. प्रगति सूचक के साथ ब्राउज़र के माध्यम से सर्वर पर फ़ाइल / एस अपलोड करें
$url_server = "http://_.com/upload.php";
विधि निष्पादित होने के बाद, फ़ाइलों के चयन के लिए एक बटन और फ़ाइलों को डाउनलोड करने के लिए एक बटन दिखाई देगा। प्रत्येक चयनित फ़ाइल के लिए एक संकेतक व्यक्तिगत रूप से दिखाई देगा।

3. रिमोट सर्वर से फाइल को अपने सर्वर पर डाउनलोड करना
$CargaDes = new CargaDes; $server = new Server();
4. हम अपने सर्वर से फाइल को रिमोट सर्वर पर देते हैं
$CargaDes = new CargaDes; $server = new Server();
परिणामस्वरूप, मैं कहना चाहता हूं
यदि यह वर्ग कम से कम एक व्यक्ति की मदद करता है, तो मुझे इसके बारे में बहुत खुशी होगी। जैसा कि मैंने शुरुआत में कहा था, मुझे रचनात्मक आलोचना और परिवर्धन के लिए खुशी होगी जो वर्ग में सुधार ला सकती है। CargaDes.class से लिंक करें ।
लेख में कक्षा के उपयोग के तरीकों को बदला। और उन्होंने कक्षा में जो कुछ भी बदला है उसका विवरण जोड़ा।
अगर मैं इसे कह सकता हूं कि त्रुटियों पर काम खत्म हो गया।
क्या किया गया है:
- उन्होंने PHPSTORM का उपयोग करके कोड को एक शैली में लाया और PSR का अनुपालन करने की कोशिश की;
- फ़ंक्शन नामों से हटाए गए अंडरस्कोर;
- पूरी तरह से बाहर रखा गया jQuery;
- सभी स्थिर तरीकों को हटा दिया;
- एक संगीतकार पैकेज के रूप में एक वर्ग बनाया;
- cUrl ने एक अलग विधि में एक फुटक्लॉथ बनाया;
- मैंने एसआरपी का अनुपालन करने की कोशिश की;
- अपवाद किए गए और त्रुटि आउटपुट को थोड़ा बदल दिया;
- कंस्ट्रक्टरों के शरीर को ठीक किया;
- अगर-और निर्माण में सुधार करने की कोशिश की;
- क्लास के बाहर js और html लिया;
- समापन टैग हटा दिया;>
- संदेशों का अनुवाद करने की क्षमता जोड़ा;
- निष्पादन योग्य उदाहरणों के साथ एक फ़ोल्डर जोड़ा गया।
क्या नहीं किया गया है:
- टिप्पणियों का अंग्रेजी में अनुवाद (यदि यह सब किसी के लिए आवश्यक नहीं है, तो समय क्यों बर्बाद करें);
- मैंने कार्यों के नामों को अधिक समझने योग्य लोगों के लिए नहीं बदला (यह मेरे लिए स्पष्ट नहीं है कि अगर अंग्रेजी, बिंदु N1 को देखें);
- मैंने ऑटोटेस्ट्स देखा, लेकिन यह बहुत अच्छा है। सार्वभौमिक रूप से करना मुश्किल है प्रत्येक के कार्यों के अपने परिदृश्य हैं, हालांकि शायद मैं गलत हूं, अगर आप इसे एक वर्ग में आवश्यक मानते हैं जिसे किसी की ज़रूरत नहीं है, तो आपके पास इसके साथ मेरी मदद करने का अवसर है;
- कुछ और संभव है, लेकिन मुझे पहले से ही पता नहीं है कि आपके पास इस बारे में बताने का ऐसा मौका क्या है।
सामान्य तौर पर, मैंने इसे ठीक करने की कोशिश की, जो टिप्पणियों में कहा गया था, अगर कोई अन्य कमियां या त्रुटियां पाई जाती हैं - लिखो, तो मैं इसे ठीक करने की कोशिश करूंगा।
वेबदेवीम और अलट्सकेविच की रचनात्मक आलोचना के लिए धन्यवाद, अगर मैं कर सकता था, तो मैं निश्चित रूप से आपको प्लस करूंगा।
मैं बाकी सभी को भी धन्यवाद देता हूं क्योंकि मुझे अपनी मुख्य गलती की समझ थी और कुछ विचारों का जन्म हुआ।