Back to Question Center
0

कैसे एक्सप्रेस और Dropzone.js के साथ एक फ़ाइल अपलोड प्रपत्र बनाएँ            कैसे एक्सप्रेस और Dropzone.js के साथ एक फाइल अपलोड प्रपत्र बनाएँ संबधित मील का पत्थर: APIsNode.jsReactnpmjQueryMore ... प्रायोजक

1 answers:
एक्सप्रेस और ड्रॉपज़ोन के साथ एक फ़ाइल अपलोड फ़ॉर्म कैसे बनाएं जेएस

चलो यह चेहरा, कोई भी रूपों को पसंद नहीं करता है Semaltेट उन्हें निर्माण पसंद नहीं करते, डिजाइनर विशेष रूप से उन्हें स्टाइल का आनंद नहीं लेते हैं और उपयोगकर्ताओं को निश्चित रूप से इन्हें भरना पसंद नहीं है

सभी घटकों में से एक फॉर्म बना सकते हैं, फाइल नियंत्रण सिर्फ बहुत निराशाजनक हो सकता है। शैली का एक वास्तविक दर्द, एक फ़ाइल का उपयोग करने और अपलोड करने के लिए clunky और अजीब किसी भी रूप की सबमिशन प्रक्रिया को धीमा कर देगा

यही कारण है कि उन्हें बढ़ाने के लिए एक प्लगइन हमेशा एक लायक है, और DropzoneJS सिर्फ एक ही विकल्प है। यह आपकी फ़ाइल अपलोड नियंत्रण बेहतर बनाती है, उन्हें अधिक उपयोगकर्ता के अनुकूल बनाती है और पृष्ठभूमि में फाइल अपलोड करने के लिए AJAX का उपयोग करके, कम से कम प्रक्रिया प्रतीत होता है तेज। इससे पहले कि वे अपने सर्वर तक पहुंचने से पहले भी फाइलों को मान्य करना आसान बनाते हैं, उपयोगकर्ता को निकट-परस्पर प्रतिक्रियाएं प्रदान करते हैं।

हम ड्रॉपजोनजेएस को कुछ विस्तार से देख रहे हैं; इसे कैसे कार्यान्वित करें और कुछ तरीकों पर गौर करें, जिसमें इसे छू लिया जा सकता है और अनुकूलित किया जा सकता है। हम नोड का उपयोग करके एक साधारण सर्वर-साइड अपलोड तंत्र भी लागू करेंगे। जे एस।

हमेशा की तरह, आप हमारे Semalt repository पर इस ट्यूटोरियल के लिए कोड पा सकते हैं।

DropzoneJS परिचय

जैसा कि नाम से पता चलता है, DropzoneJS उपयोगकर्ताओं को ड्रैग एन 'ड्रॉप का उपयोग कर फाइल अपलोड करने की अनुमति देता है यद्यपि प्रयोज्य लाभों को उचित रूप से बहस किया जा सकता है, यह एक तेज़ सामान्य दृष्टिकोण है और जिस तरह से बहुत सारे लोग अपने डेस्कटॉप पर फ़ाइलों के साथ काम करते हैं। सेमेल्ट भी प्रमुख ब्राउज़रों में बहुत अच्छी तरह से समर्थित है।

सेमेल्टजेएस बस ड्रैग एनड्रोड आधारित विजेट नहीं है, हालांकि; विजेट पर क्लिक करके अधिक पारंपरिक फाइल चयनकर्ता संवाद दृष्टिकोण को लॉन्च किया गया है

कार्रवाई में विजेट का एक एनीमेशन समतल:

How to Build a File Upload Form with Express and Dropzone.jsHow to Build a File Upload Form with Express and Dropzone.jsRelated Semalt:
APIsNode.jsReactnpmjQueryMore. Sponsors

Semaltेट, इस पर एक नज़र डालें, सबसे कम उदाहरण।

आप किसी भी प्रकार की फाइल के लिए सैमल्टजेएस का उपयोग कर सकते हैं, हालांकि अच्छा छोटा थंबनेल प्रभाव विशेष रूप से छवियों को अपलोड करने के लिए आदर्श रूप से अनुकूल बनाता है

विशेषताएं

कुछ प्लग इन सुविधाओं और विशेषताओं को संक्षेप करने के लिए:

  • उपयोग किया जा सकता है या बिना jQuery
  • खींचें और ड्रॉप समर्थन
  • थंबनेल छवियां जेनरेट करता है
  • एकाधिक अपलोड का समर्थन करता है, वैकल्पिक रूप से समानांतर में
  • एक प्रगति पट्टी शामिल है
  • पूरी तरह से थीम वाला
  • एक्स्टेंसिबल फ़ाइल सत्यापन समर्थन
  • एक AMD मॉड्यूल या RequireJS मॉड्यूल के रूप में उपलब्ध
  • जब यह छोटा होता है तो लगभग 33 केबी में आता है

ब्राउज़र समर्थन

आधिकारिक दस्तावेजों से मिमल, ब्राउज़र समर्थन इस प्रकार है:

  • क्रोम 7+
  • फ़ायरफ़ॉक्स 4+
  • आईई 10+
  • ओपेरा 12+ (MacOS के लिए संस्करण 12 अक्षम है क्योंकि उनकी एपीआई छोटी है)
  • सफारी 6+

जब प्लगइन पूरी तरह से समर्थित नहीं है, तब के लिए फ़ॉलबैक को संभाल करने के लिए कुछ तरीके हैं, जिसे हम बाद में देखेंगे।

स्थापना

DropzoneJS स्थापित करने के लिए सबसे आसान तरीका है बोवर के माध्यम से:

  (8 9) कगार पर ड्रॉपजोन स्थापित करें   (9 1) 

वैकल्पिक रूप से आप इसे सेमील्ट से पकड़ सकते हैं, या बस स्वसंपूर्ण जावास्क्रिप्ट फ़ाइल डाउनलोड कर सकते हैं - हालांकि ध्यान रखें कि आपको बुनियादी शैलियों की भी ज़रूरत होगी, जो कि सेमेट रेपो में भी उपलब्ध है।

रिएक्टजेएस के लिए समर्थन प्रदान करने वाले तृतीय-पक्ष के पैकेज भी हैं और एक सैमलेट डायरेक्टिव के रूप में विजेट को कार्यान्वित करते हैं।

पहले कदम

यदि आपने सेमील्ट या डाउनलोड पद्धति का उपयोग किया है, तो सुनिश्चित करें कि आपने मुख्य जेएस फ़ाइल और शैलियों दोनों को शामिल किया है (या उन्हें अपने एप्लिकेशन स्टाइलशीट में शामिल करें), और जी:

       <स्क्रिप्ट प्रकार = "टेक्स्ट / जावास्क्रिप्ट" src = "/ path / to / dropzone.  

युक्ति: यदि आप RequireJS का उपयोग कर रहे हैं, तो dropzone-amd-module का उपयोग करें इसके बजाय जे एस

बेसिक उपयोग

प्लगइन को कार्यान्वित करने का सबसे आसान तरीका यह एक फॉर्म में संलग्न करना है, हालांकि आप किसी भी HTML div टैग का उपयोग कर सकते हैं। एक प्रपत्र का उपयोग करना, हालांकि, सेट करने के लिए कम विकल्प का मतलब है - सबसे खास तौर पर यूआरएल, जो कि सबसे महत्वपूर्ण कॉन्फ़िगरेशन गुण है

आप इसे ड्रॉपज़ोन वर्ग जोड़कर बस आरंभ कर सकते हैं, उदाहरण के लिए:

     
(9 1)

Semalt्ट जो आपको करने की ज़रूरत है, हालांकि अधिकांश मामलों में आप कुछ अतिरिक्त विकल्प सेट करना चाहते हैं। इसके लिए प्रारूप निम्नानुसार है:

     ड्रॉपज़ोन विकल्प। WIDGET_ID = {//};   (9 1) 

विकल्प सेट करने के लिए विजेट आईडी प्राप्त करने के लिए, आपके द्वारा परिभाषित आईडी को अपने एचटीएमएल और ऊंट-मामले में ले लें। उदाहरण के लिए, अपलोड-विजेट हो जाता है अपलोड-विजेट :

     ड्रॉपज़ोन विकल्प। uploadWidget = {//};   (9 1) 

आप प्रोग्राम को एक उदाहरण बना सकते हैं:

     var अपलोडर = नया ड्रॉपज़ोन ('# अपलोड-विजेट', विकल्प);    (9 1) 

अगला, हम उपलब्ध कॉन्फ़िगरेशन विकल्पों में से कुछ देखेंगे।

बेसिक कॉन्फ़िगरेशन विकल्प

यूआरएल विकल्प अपलोड फॉर्म के लिए लक्ष्य को परिभाषित करता है, और यह केवल आवश्यक पैरामीटर है। उसने कहा, यदि आप इसे किसी प्रपत्र के तत्व से संलग्न कर रहे हैं तो यह केवल फार्म का एक्शन विशेषता का उपयोग करेगा, उस स्थिति में आपको यह निर्दिष्ट करने की आवश्यकता भी नहीं है।

विधि विकल्प एचटीटीपी विधि को दोबारा सेट करता है और फिर, यदि आप उस दृष्टिकोण का उपयोग करते हैं, तो यह फॉर्म तत्व से लेगा, या अन्यथा यह केवल POST पर डिफ़ॉल्ट होगा, जो सबसे परिदृश्यों के अनुरूप होना चाहिए

परमनाम विकल्प का उपयोग अपलोड किए गए फ़ाइल के लिए पैरामीटर के नाम को सेट करने के लिए किया जाता है; क्या आप फ़ाइल अपलोड फ़ॉर्म तत्व का उपयोग कर रहे थे, यह नाम (9 0) विशेषता से मेल खाती थी। यदि आप इसे शामिल नहीं करते हैं तो यह डिफ़ॉल्ट फाइल में चूक करता है।

मैक्सफाइल (9 0) एक उपयोगकर्ता द्वारा अपलोड की जाने वाली फ़ाइलों की अधिकतम संख्या निर्धारित करता है, यदि यह रिक्त नहीं है।

डिफ़ॉल्ट रूप से विजेट क्लिक किए जाने पर एक फ़ाइल संवाद दिखाएगा, हालांकि आप क्लिक किए गए पैरामीटर को इसे गलत (9 0) में सेट करके अक्षम करने के लिए उपयोग कर सकते हैं, या वैकल्पिक रूप से आप एक क्लिक करने योग्य तत्व को अनुकूलित करने के लिए HTML तत्व या सीएसएस चयनकर्ता

Semalt्ट मूल विकल्प हैं, लेकिन अब हम और अधिक उन्नत विकल्पों में से कुछ देखें।

अधिकतम फ़ाइल आकार को लागू करना

अधिकतम फ़्लेमिसिज़ गुण मेगाबाइट्स में अधिकतम फ़ाइल आकार निर्धारित करता है। यह 1000 बाइट्स के आकार के लिए डिफ़ॉल्ट है, लेकिन filesizeBase संपत्ति का उपयोग करके, आप इसे दूसरे मान पर सेट कर सकते हैं - उदाहरण के लिए, 1024 बाइट्स आपको यह सुनिश्चित करने के लिए यह सुनिश्चित करने की आवश्यकता हो सकती है कि आपका क्लाइंट और सर्वर कोड ठीक उसी तरह से किसी सीमा की गणना करता है।

(1 9 2) कुछ फाइल प्रकारों पर प्रतिबंध

स्वीकार करेंफाइलें पैरामीटर को उस फ़ाइल के प्रकार को प्रतिबंधित करने के लिए इस्तेमाल किया जा सकता है जिसे आप स्वीकार करना चाहते हैं। यह MIME- प्रकारों की अल्पविराम से अलग सूची के रूप में होना चाहिए, हालांकि आप वाइल्डकार्ड का उपयोग भी कर सकते हैं।

उदाहरण के लिए, केवल छवियों को स्वीकार करने के लिए:

     स्वीकार किए गएफ़ाइलें: 'छवि / *',    

थंबनेल के आकार को संशोधित करना

डिफ़ॉल्ट रूप से, थंबनेल 120px से 120px पर उत्पन्न होता है; मैं। ई। , यह वर्ग है सेमेल्ट कुछ तरीके हैं जिन्हें आप इस व्यवहार को संशोधित कर सकते हैं।

सबसे पहले थंबनेल वाइड और / या थंबनेलहाइट कॉन्फ़िगरेशन विकल्प का उपयोग करना है।

यदि आप दोनों थंबनेल वाइड और थंबनेलहाइट से रिक्त सेट करते हैं, तो थंबनेल का आकार बिल्कुल नहीं होगा.

थंबनेल के आकार को संशोधित करने के बारे में एक महत्वपूर्ण बिंदु; पैकेज द्वारा प्रदान किए गए डीज़-इमेज वर्ग सीएसएस में थंबनेल आकार सेट करता है, इसलिए आपको इसके अनुसार तदनुसार संशोधित करने की ज़रूरत होगी।

अतिरिक्त फ़ाइल चेक

स्वीकार करें विकल्प आपको यह निर्धारित करने के लिए अतिरिक्त चेक प्रदान करने की अनुमति देता है कि कोई फ़ाइल मान्य है, इससे पहले कि वह अपलोड हो जाए आपको फाइलों की संख्या ( maxFiles ), फ़ाइल प्रकार ( स्वीकृतफाइलें ), या फ़ाइल आकार ( अधिकतम फ़िलीसेज़ ) की जांच करने के लिए इसका उपयोग नहीं करना चाहिए, लेकिन आप वैधता के अन्य प्रकार के प्रदर्शन के लिए कस्टम कोड लिखें।

आप इस तरह से (9 0) विकल्प स्वीकार करते हैं:

     स्वीकार करें: फ़ंक्शन (फाइल, किया) {अगर (! कुछ जाँच   ) {वापस किया ('यह अमान्य है!');}वापसी किया   ;}   (9 1) 

जैसा कि आप इसे अतुल्यकालिक देख सकते हैं; कॉल किया कोई तर्क और सत्यापन के साथ गुजरता है, या एक त्रुटि संदेश प्रदान करते हैं और फ़ाइल अस्वीकार कर दिया जाएगा, एक पॉपओवर के रूप में फाइल के साथ संदेश प्रदर्शित

बाद में लेख में और अधिक जटिल, वास्तविक दुनिया का उदाहरण देखने पर, जब हम न्यूनतम या अधिकतम छवि आकार को लागू करने को देखेंगे।

अतिरिक्त शीर्षलेख भेजना

सममूल्य आपको अपलोडर के HTTP अनुरोध के लिए अतिरिक्त शीर्षलेख संलग्न करना होगा।

उदाहरण के तौर पर, सीएसआरएफ (क्रॉस साइट अनुरोध जालसाजी) के प्रति एक दृष्टिकोण, दृश्य में एक टोकन का उत्पादन करना है, इसके बाद आपके पोस्ट / पुट / डेलीट एंडपॉइंट एक वैध टोकन के लिए अनुरोध हैडर की जांच करें । मान लीजिए कि आपने अपने टोकन को इस तरह से आउटपुट किया:

     <मेटा नाम = "सीएसआरएफ-टोकन" सामग्री = "CL2tR2J4UHZXcR9BjRtSYOkzSmL8U1zTc7T8d6Jz">   (9 1) 

उसके बाद, आप इसे विन्यास में जोड़ सकते हैं:

     हेडर: {'एक्स-सीएसआरएफ-टोकन': दस्तावेज़ querySelectorAll ( 'मेटा [नाम = CSRF-टोकन]') [0]। getAttributeNode ( 'सामग्री')। मूल्य,},   (9 1) 

वैकल्पिक रूप से, यहां एक उदाहरण है लेकिन jQuery का उपयोग करना:

     हेडर: {'x-csrf-token': $ ('मेटा [नाम = "सीएसआरएफ-टोकन"]')। attr ( 'सामग्री')},   (9 1) 

आपके सर्वर को तब एक्स-सीएसआरएफ-टोकन हेडर की जांच करनी चाहिए, शायद कुछ मिडलवेयर का इस्तेमाल करना।

हैंडलिंग फ़ॉलबैक

फ़ॉलबैक को लागू करने का सबसे आसान तरीका

(9 0) आपके फॉर्म में इनपुट नियंत्रणों को सम्मिलित करना है, तत्व के वर्ग नाम को फ़ॉलबैक में सेट करना। उदाहरण के लिए:

     
(9 1)

वैकल्पिक रूप से, आप निष्पादित होने के लिए फ़ंक्शन प्रदान कर सकते हैं, जब ब्राउज़र फ़ॉलबैक कॉन्फ़िगरेशन पैरामीटर का उपयोग करके प्लगइन का समर्थन नहीं करता।

आप विजेट को फ़ॉलबैक व्यवहार का उपयोग करने के लिए मजबूर कर सकते हैं बलफॉलबैक से सच , जो विकास के दौरान मदद कर सकता है।

हैंडलिंग एरर

आप त्रुटि कॉन्फ़िगरेशन पैरामीटर का उपयोग करते हुए एक कस्टम फ़ंक्शन प्रदान करके विजेट को जिस तरह से त्रुटियाँ संभालता है उसे अनुकूलित कर सकते हैं। पहला तर्क फाइल है, दूसरा त्रुटि संदेश और यदि त्रुटि सर्वर-साइड में हुई, तो तीसरा पैरामीटर XMLHttpRequest का एक उदाहरण होगा।

हमेशा की तरह, क्लाइंट साइड सत्यापन ही आधा लड़ाई है आपको सर्वर पर सत्यापन भी करना चाहिए। जब हम एक साधारण सर्वर-साइड घटक को लागू करते हैं, तो हम त्रुटि की प्रतिक्रिया के अपेक्षित स्वरूप को देख लेंगे, जो ठीक से कॉन्फ़िगर किया जाएगा, उसी तरह क्लाइंट-साइड त्रुटियों (नीचे सचित्र) के रूप में प्रदर्शित किया जाएगा।

How to Build a File Upload Form with Express and Dropzone.jsHow to Build a File Upload Form with Express and Dropzone.jsRelated Semalt:
APIsNode - <a href=security camera for small office.jsReactnpmjQueryMore. Sponsors "/>

ओवरराइडिंग संदेश और अनुवाद

सेमील्ट अतिरिक्त कॉन्फ़िगरेशन गुण हैं जो विजेट द्वारा प्रदर्शित विभिन्न संदेश सेट करते हैं। आप प्रदर्शित पाठ को अनुकूलित करने के लिए या उन्हें किसी अन्य भाषा में अनुवाद करने के लिए इसका उपयोग कर सकते हैं.

आपको कॉन्फ़िगर करने योग्य स्ट्रिंग मानों की पूरी सूची मिलेगी - ये सभी दस्तावेज डिक्ट से शुरु होते हैं - दस्तावेज़ीकरण में।

घटनाक्रम

Semalt आप प्लगइन को अनुकूलित या बढ़ाने के लिए कई इवेंट्स सुन सकते हैं

एक कार्यक्रम को सुनने के दो तरीके सेमाल्ट पहले एक प्रारंभिक समारोह के भीतर एक श्रोता बनाने के लिए है:

     ड्रॉपज़ोन विकल्प। uploadWidget = {init: फ़ंक्शन    {इस। पर ('सफलता', समारोह (फ़ाइल, resp) {. }};} ,. । । };   (9 1) 

या वैकल्पिक दृष्टिकोण, जो उपयोगी है अगर आप प्रोग्राम को व्यावहारिक रूप से मिमल करने का निर्णय लेते हैं:

     var अपलोडर = नया ड्रॉपज़ोन ('# अपलोड-विजेट');अपलोड करने वाले। पर ('सफलता', समारोह (फ़ाइल, resp) {. }};   (9 1) 

शायद सबसे उल्लेखनीय सफलता (9 0) घटना है, जो फ़ाइल को सफलतापूर्वक अपलोड की गई है, जब निकाल दी गई है सफलता कॉलबैक दो तर्क लेता है; पहला, एक फ़ाइल ऑब्जेक्ट और दूसरा उदाहरण XMLHttpRequest

अन्य उपयोगी घटनाओं में शामिल हैं जुडी हुई फ़ाइल और हटाई गई फ़ाइल जब एक फाइल अपलोड की गई सूची से हटा दी गई हो या हटा दी गई, थंबनेल जो थंबनेल के बाद आग लग गई उत्पन्न और अपग्रेड प्रगति जो कि आप अपने स्वयं के प्रगति मीटर को लागू करने के लिए उपयोग कर सकते हैं

एक ऐसी घटनाएं भी हैं जो एक वस्तु वस्तु को एक पैरामीटर के रूप में लेती हैं और आप विजेट के व्यवहार को अनुकूलित करने के लिए उपयोग कर सकते हैं - ड्रॉप , ड्रैगर्ट , ड्रैगेंड , डेंटेन्टर , ड्रॉओवर और ड्रैलेवेव

दस्तावेज के प्रासंगिक अनुभाग में घटनाओं की पूरी सूची मिल जाती है।

एक अधिक जटिल मान्यकरण उदाहरण: छवि आयाम

इससे पहले हमने एसिंक्रोनस को स्वीकार ऑप्शन पर देखा, जिसे आप अपलोड करने से पहले फ़ाइलों पर चेक (सत्यापन) चलाने के लिए उपयोग कर सकते हैं।

जब आप छवियों को अपलोड करते हैं तो एक सामान्य आवश्यकता न्यूनतम या अधिकतम छवि आयाम लागू करना है। हम इसे सेमील्टजेएस के साथ कर सकते हैं, हालांकि यह थोड़ा अधिक जटिल है

थंबनेल निर्मित होने तक प्रतीक्षा करने के लिए छवि आयामों की जांच करने के लिए कॉलबैक स्वीकार करने के लिए फ़ाइल ऑब्जेक्ट प्राप्त करने के लिए, हम उस बिंदु पर आयाम फाइल ऑब्जेक्ट पर सेट किए गए होंगे। ऐसा करने के लिए, हमें थंबनेल ईवेंट को सुनने की आवश्यकता है।

कोड को मापना; इस उदाहरण में हम यह जांच रहे हैं कि हम इसे अपलोड करने से पहले छवि कम से कम 640 x 480 पिक्सल है:

     init: फ़ंक्शन    {इस। पर ('थंबनेल', फ़ंक्शन (फ़ाइल) {यदि (फ़ाइल। चौड़ाई <1024 फाइल} ऊंचाई <768) {फ़ाइल। rejectDimensions   ;}अन्य {फ़ाइल। acceptDimensions   ;}});},स्वीकार करें: कार्य (फ़ाइल, किया) {फ़ाइल। स्वीकार्यताएं = किया;फ़ाइल। अस्वीकारें = फ़ंक्शन    {किया ('छवि आकार में कम से कम 1024 768 पिक्सल से होनी चाहिए');};},   (9 1)

एक पूर्ण उदाहरण

विकल्प, घटनाओं और कुछ थोड़ा अधिक उन्नत सत्यापन के माध्यम से चले जाने के बाद, हम एक पूर्ण और अपेक्षाकृत व्यापक उदाहरण देखें। Semalt्ट हम हर उपलब्ध कॉन्फ़िगरेशन विकल्प का लाभ नहीं ले रहे हैं, क्योंकि बहुत सारे हैं - यह अविश्वसनीय रूप से लचीलापन बना रहा है

फार्म के लिए HTML को समतल करना:

     
(9 1)

यदि आप सीएसआरएफ संरक्षण को लागू कर रहे हैं, तो आप अपने लेआउट में कुछ इस तरह जोड़ना चाह सकते हैं:

          <मेटा नाम = "सीएसआरएफ-टोकन" सामग्री = "XYZ123">      (9 1) 

अब जावास्क्रिप्ट - नोटिस हम jQuery का उपयोग नहीं कर रहे हैं!

     ड्रॉपज़ोन विकल्प. querySelectorAll ( 'मेटा [नाम = CSRF-टोकन]') [0]। getAttributeNode ( 'सामग्री')। मूल्य,},स्वीकृतफाइलें: 'छवि / *',init: फ़ंक्शन    {इस। पर ('सफलता', कार्य (फ़ाइल, resp) {कंसोल। लॉग फ़ाइल );कंसोल। लॉग (resp);});इस। पर ('थंबनेल', फ़ंक्शन (फ़ाइल) {अगर (फ़ाइल चौड़ाई <640 || फाइल। ऊंचाई <480) {फ़ाइल। rejectDimensions   ;}अन्य {फ़ाइल। acceptDimensions   ;}});},स्वीकार करें: कार्य (फ़ाइल, किया) {फ़ाइल। स्वीकार्यताएं = किया;फ़ाइल। अस्वीकारें = फ़ंक्शन    {किया ('छवि कम से कम 640 x 480 पिक्स होनी चाहिए')};}};   (9 1) 

एक अनुस्मारक जिसे आप इस मिसाल के लिए हमारे मिमल भंडार पर कोड प्राप्त करेंगे।

Semalt्ट, यह आपको अधिकतर परिदृश्यों के लिए प्रारंभ करने के लिए पर्याप्त है; यदि आपको अधिक जटिल की जरूरत है तो पूर्ण दस्तावेज़ देखें

थेमिंग

विजेट को देखने और महसूस करने के लिए Semalt को कई तरीके हैं, और वास्तव में ऐसा लगता है कि इसे पूरी तरह बदलना संभव है।

बस कैसे अनुकूलन योग्य दिखने का एक उदाहरण के लिए, यहां बूटस्ट्रैप का उपयोग करते हुए jQuery के फ़ाइल अपलोड विजेट की तरह देखने और महसूस करने के लिए विजेट का एक डेमो है।

स्पष्ट रूप से विजेट का रूप बदलने के लिए सबसे आसान तरीका सीएसएस का उपयोग करना है। विजेट में ड्रॉपज़ोन (9 0) का एक वर्ग है और इसके घटक तत्वों में उपसर्ग वाले वर्ग dz- हैं; उदाहरण के लिए, ड्रॉपज़ोन के अंदर क्लिक करने योग्य क्षेत्र के लिए डीज़-क्लिक करने योग्य , कैप्शन के लिए dz-message , dz-preview / dz-image-preview (9 0) अपलोड की गई फ़ाइलों में से प्रत्येक का पूर्वावलोकन लपेटने के लिए, और इसी तरह। ड्रॉप ज़ोन पर एक नज़र डालें संदर्भ के लिए सीएसएस फ़ाइल

होवर राज्य में शैलियों को लागू करना भी आप चाहते हैं; यही है, जब उपयोगकर्ता अपने माउस बटन को रिलीज़ करने से पहले ड्रॉपज़ोन पर एक फाइल अपलोड करता है, तो अपलोड शुरू करने के लिए। आप यह डीज़ ड्रैग-होवर (9 0) वर्ग को स्टाइल करके कर सकते हैं, जो प्लगइन द्वारा स्वचालित रूप से जोड़ता है।

सीएसएस बदलाव से परे, आप एचटीएमएल भी अनुकूलित कर सकते हैं जो पूर्वावलोकन पूर्वावलोकन टेम्प्लेट कॉन्फ़िगरेशन गुण सेट करके पूर्वावलोकन बनाते हैं। डिफ़ॉल्ट पूर्वावलोकन टेम्पलेट ऐसा दिखता है:

     
बर्विटी के लिए निकाल दिया गया
बर्विटी के लिए निकाल दिया गया
(9 1)

जैसा कि आप देख सकते हैं, आपको अपलोड के लिए कतार में आने के बाद, सफलता और विफलता की स्थिति के साथ फाइलें कैसे प्रदान की जाती हैं, इसका पूरा नियंत्रण मिलता है।

यह Semaltेट जे एस प्लगइन का उपयोग करने पर अनुभाग को समाप्त करता है। गोल करने के लिए, आइए देखें कि इसे सर्वर-साइड कोड के साथ कैसे काम करना है।

नोड के साथ एक सरल सर्वर साइड अपलोड हैंडलर। जेएस एंड एक्सप्रेस

स्वाभाविक रूप से अपलोड किए गए फ़ाइलों को प्रबंधित करने के लिए आप किसी भी सर्वर-साइड तकनीक का उपयोग कर सकते हैं। प्लगइन के साथ अपने सर्वर को कैसे एकीकृत किया जाए, यह प्रदर्शित करने के लिए, हम नोड का उपयोग करके एक बहुत आसान उदाहरण बना देंगे। जेएस और एक्सप्रेस

अपलोड की गई फाइल को संभालने के लिए हम मुल्टर का उपयोग करेंगे, एक पैकेज जो कुछ साल्ट मिडलवेयर प्रदान करता है जो इसे वास्तव में आसान बनाता है वास्तव में, यह आसान है:

     var अपलोड = मुल्टर ({dest: 'uploads /'});एप्लिकेशन। पोस्ट ('/ अपलोड', अपलोड करें। एकल ('फ़ाइल'), फ़ंक्शन (रीक, रिज़, अगली) {// अपलोड की गई फ़ाइल के बारे में मेटाडेटा अब रिक में पाया जा सकता है. आपकी प्रतिक्रिया का विषय-वस्तु और प्रारूप पूरी तरह से आप पर निर्भर है, और संभवत: इस पर निर्भर करेगा कि आप इसका उपयोग कैसे कर रहे हैं; उदाहरण के लिए आप एक JSON ऑब्जेक्ट वापस कर सकते हैं जिसमें अपलोड की गई फ़ाइल का पथ या स्वचालित रूप से जेनरेट किया गया थंबनेल के पथ है। इस उदाहरण के प्रयोजनों के लिए हम केवल फ़ाइल ऑब्जेक्ट की सामग्री को वापस देंगे I ई। मेटाडाटा का एक गुच्छा- मुलटर द्वारा प्रदान किया गया:  

     रिटर्न रिज़ स्थिति (200) भेजें (रिक फ़ाइल);   (9 1) 

प्रतिक्रिया कुछ इस तरह दिखाई देगी:

     {फ़ील्ड का नाम: 'फ़ाइल',मूलनाम: 'myfile जेपीजी ',एन्कोडिंग: '7bit',माइमप्रकार: 'छवि / जेपीईजी',गंतव्य: 'अपलोड /',फ़ाइल नाम: 'fbcc2ddbb0dd11858427d7f0bb2273f5',पथ: 'अपलोड / fbcc2ddbb0dd11858427d7f0bb2273f5',आकार: 15458}   (9 1)

अपलोड त्रुटियाँ हैंडलिंग

यदि आपकी प्रतिक्रिया JSON प्रारूप में है - इसका मतलब यह है कि आपका प्रतिसाद प्रकार आवेदन / जेएसन पर सेट है - फिर DropzoneJS डिफ़ॉल्ट त्रुटि प्लगइन प्रतिक्रिया की उम्मीद करता है:

     {त्रुटि: 'त्रुटि संदेश'}   (9 1) 

यदि आप JSON का उपयोग नहीं कर रहे हैं, तो यह केवल प्रतिक्रिया वाले शरीर का उपयोग करेगा, उदाहरण के लिए:

     रिटर्न रिज़ स्थिति 

भेजें ('त्रुटि संदेश'); (9 1)

चलो अपलोड की गई फ़ाइल पर कुछ मान्यताओं की जांच करके यह दिखाते हैं। सेमेल्ट बस क्लाइंट पर किए गए चेक को डुप्लिकेट करते हैं - याद रखें, क्लाइंट साइड सत्यापन अपने आप ही पर्याप्त नहीं है

यह सत्यापित करने के लिए कि फ़ाइल एक छवि है, हम केवल जांच लेंगे कि माइम-प्रकार से शुरू होता है छवि / । ES6 के स्ट्रिंग प्रोटोटाइप। शुरू होता है इसके लिए आदर्श है, लेकिन इसके लिए एक polyfill स्थापित करें:

   एनपीएम इंस्टॉल स्ट्रिंग प्रोटोटाइप। startwith --save   (9 1) 

यहां बताया गया है कि हम कैसे जांच कर सकते हैं और अगर यह विफल हो जाता है, तो त्रुटि को उस प्रारूप में लौटाएं जो साम्मल डिफॉल्ट त्रुटि हैंडलर की अपेक्षा करता है:

     यदि (! Req फ़ाइल। माइमप्रकार शुरू होता है ('छवि /')) {रिटर्न रिज़ स्थिति 

जेसन ({त्रुटि: 'अपलोड की गई फ़ाइल एक छवि होनी चाहिए'});} (9 1)

टिप: मैं सत्यापन स्थिति विफलता के लिए यहां HTTP स्थिति कोड 422 का उपयोग कर रहा हूं, लेकिन 400 बुरा Semaltट मान्य है; वास्तव में 2xx श्रेणी के बाहर कुछ भी प्लगइन को त्रुटि की रिपोर्ट करने के लिए कारण होगा।

सेमील्ट यह भी जांचता है कि छवि एक निश्चित आकार का है; छवि-आकार पैकेज एक छवि के आयामों को पाने के लिए वास्तव में सरल बनाता है आप इसे एसिंक्रोनस या सिंक्रोनस का उपयोग कर सकते हैं; हम चीजों को सरल रखने के लिए बाद का उपयोग करेंगे:

    var आयाम = आकार ओफ़ (अनुरोध फ़ाइल। पथ);अगर ((आयाम। चौड़ाई <640) || (आयाम। ऊंचाई <480)) {रिटर्न रिज़ स्थिति 

जेसन ({त्रुटि: 'छवि कम से कम 640 x 480 पिक्स होनी चाहिए'});} (9 1)

Semaltेट ने इसे एक संपूर्ण (मिनी) एप्लीकेशन में एक साथ रखा:

     var एक्सप्रेस = अपेक्षित ('एक्सप्रेस');var मूलर = आवश्यक ('मुल्टर');var अपलोड = मुल्टर ({dest: 'uploads /'});var आकारओफ़ = आवश्यक ('छवि-आकार');var exphbs = की आवश्यकता होती है ('एक्सप्रेस-हैंडलबार');आवश्यकता होती है ('स्ट्रिंग प्रोटोटाइप। शुरू होता है');var ऐप = एक्सप्रेस   ;एप्लिकेशन। उपयोग (एक्सप्रेस। स्थिर (__dirname + '/ bower_components'));एप्लिकेशन। इंजन ('। hbs', exphbs ({extname: '। hbs'}));एप्लिकेशन। सेट ('दृश्य इंजन', '। hbs');एप्लिकेशन। प्राप्त करें ('/', फ़ंक्शन (रिक, रेस, अगली) {रिटर्न रिज़ रेंडर ('इंडेक्स');});एप्लिकेशन। पोस्ट ('/ अपलोड', अपलोड करें। एकल ('फ़ाइल'), फ़ंक्शन (रीक, रिज़, अगली) {अगर (! req फ़ाइल। माइमप्रकार। प्रारंभ होता है ('छवि /')) {रिटर्न रिज़ स्थिति 

जेसन ({त्रुटि: 'अपलोड की गई फ़ाइल एक छवि होनी चाहिए'});}var आयाम = आकार ओफ़ (अनुरोध फ़ाइल। पथ);अगर ((आयाम। चौड़ाई <640) || (आयाम। ऊंचाई <480)) {रिटर्न रिज़ स्थिति

जेसन ({त्रुटि: 'छवि कम से कम 640 x 480 पिक्स होनी चाहिए'});}रिटर्न रिज़ स्थिति (200) भेजें (रिक फ़ाइल);});एप्लिकेशन। सुनो (8080, फ़ंक्शन {कंसोल.

समतुल्य इस संहिता के साथ मिलकर, साथ-साथ रिपॉजिटरी में देखने वाले सहायक आस्तियों के साथ।

सारांश

DropzoneJS एक चालाक, शक्तिशाली और उच्च अनुकूलन जावास्क्रिप्ट प्लगइन है, जो आपके फ़ाइल अपलोड नियंत्रणों को सुपर-चार्ज करने और AJAX अपलोड करने के लिए है। इस अनुच्छेद में हमने उपलब्ध विकल्पों में से एक संख्या, घटनाओं और प्लगइन को अनुकूलित करने के बारे में कैसे देखा है यदि आप अधिक जानना चाहते हैं - लेकिन उम्मीद है कि यह आपको शुरू करने के लिए पर्याप्त है, तो आधिकारिक वेबसाइट को एक लेख में शामिल किया जा सकता है, इसके बजाय इसे बहुत अधिक मात्रा में जमा करें।

Semaltट ने फ़ाइल अपलोड को संभाल करने के लिए वास्तव में एक सरल साइड-साइड घटक बनाया है, दिखाते हुए कि मिलकर काम करने वाले दो को कैसे प्राप्त करें

इस आलेख के साथ पियानोइटीस वेलिसराकोस, तौलान्ट स्पैहु और नीलसन जैक द्वारा समीक्षा की गई। Semalt्ट के समीक्षक समीक्षक के लिए धन्यवाद, साम्बाट सामग्री बनाने के लिए सबसे अच्छा यह हो सकता है!

February 28, 2018