कोणीय का उपयोग करके फ़ाइल भेजना इतना मुश्किल क्यों है? [बन्द है]


18

मुझे सर्वर पर एक फ़ाइल (बहुत बड़ी फ़ाइल) भेजनी है। मैं अध्ययन कर रहा हूं कि मेरे पास क्या विकल्प हैं और इसे कैसे करना है। मैं कोणीय + एक्सप्रेस + नोडज का उपयोग कर रहा हूं।

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

जैसे ही मैं कोणीय का उपयोग करने की कोशिश करता हूं, सब कुछ अविश्वसनीय जटिल हो जाता है। मतलब, मुझे एक निर्देश का उपयोग करना होगा, और अभी भी सर्वर से परेशानी है। जैसा कि मैंने कहा कि मैं multer का उपयोग कर रहा हूं, जिसके लिए डेटा को "मल्टीपार्ट / फॉर्म-डेटा" होना चाहिए, और मुझे सर्वर से "त्रुटि: मल्टीपार्ट: सीमा नहीं मिली"

कोणीय में फ़ाइलों को लोड करने के लिए कई मॉड्यूल हैं। जो दिखाता है कि एक से अधिक समाधानों के साथ आवर्ती समस्या है। अब, मैं कोड पोस्ट नहीं करना चाहता क्योंकि इसके लिए मैंने स्टैक ओवरफ्लो में पूछा था । मेरा प्रश्न अधिक सूक्ष्म है:

एक सरल रूप के साथ क्यों किया जा सकता है, कोणीय में बहुत जटिल हो सकता है? मैं इसे एक बुरे तरीके से मतलब नहीं है। मेरा मतलब है कि 'मैं' समझना चाहता हूं '।


क्या यह किसी तरह स्टैक ओवरफ्लो में आपके हाल के प्रश्न से संबंधित है ? "मैं त्रुटि को कैसे हल करूं 'सीमा नहीं मिली' और इसका क्या मतलब है ..."
gnat

2
हां, इसीलिए मैंने सवाल पर लिंक डाल दिया। लेकिन यहाँ मैं इस समस्या को हल नहीं करना चाहता। मैं जानना चाहूंगा कि पहली बार में यह समस्या क्यों है।
कॉची

जवाबों:


21

कोणीय एकल पृष्ठ अनुप्रयोगों के लिए है, पेज को पुनः लोड किए जाने से बचने के लिए AJAX का उपयोग करके फॉर्म भेजे जाते हैं। AJAX के साथ मल्टीपार्ट फ़ॉर्म भेजने के लिए, आपके ब्राउज़र को FormData(IE10 +) समर्थन करने की आवश्यकता है : http://caniuse.com/#search=ormormata

https://developer.mozilla.org/en-US/docs/Web/API/FormData

ngModelइनपुट [प्रकार = "फ़ाइल"] के साथ काम नहीं करता है, इसलिए आपको अपना स्वयं का निर्देश बनाना होगा। आपका अपना निर्देश सरल होना चाहिए: परिवर्तन पर, Fileअपने दायरे में किसी वस्तु को अपडेट करें।

अपना फॉर्म भेजते समय, एक FormDataऑब्जेक्ट बनाएं और अपनी फाइल (एस) को इसमें इस्तेमाल करके FormData.setया इसमें जोड़ें FormData.append। आप अपना फ़ॉर्मडेटा $httpया के साथ भेज सकते हैं $resource, और आप सामग्री-प्रकार और सीमा निर्धारित करने के लिए ब्राउज़र पर भरोसा कर रहे हैं।

var formData = new FormData();
formData.append('file', $scope.file);
$http.post('yourUrl', formData, {
   transformRequest: angular.identity,
   headers: {'Content-Type': undefined}
}).then(function () {
   // ...
});

angular.identity हमारे डेटा पर कुछ भी करने के लिए कोणीय को रोकता है (जैसे इसे क्रमबद्ध करना)।

मैं इस लेख की सलाह देता हूं: https://uncorkedstudios.com/blog/multipartformdata-file-upload-with-angularjs


3
मुझे आश्चर्य है कि फाइल निर्देश को कोणीय में क्यों छोड़ा गया है!
user237944
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.