2016-02-11 13 views
13

में फ़ाइल अपलोड करें एएलएम में कोई फ़ाइल (छवि या एक्सेल) कैसे अपलोड करता है?एल्म

कोई उदाहरण नहीं दिख रहा है।

उत्तर ठीक है भले ही मूल कोड का उपयोग किया गया हो। DataElm-Html में देखा है लेकिन ऐसा लगता है कि फ़ाइलें और ब्लॉब्स समर्थित नहीं हैं। इस के आसपास रास्ता क्या है?

उत्तर

18

मैं लाइब्रेरी मिस्टर मेटाफोर का लेखक हूं। हालांकि वह बताते हैं कि इसका उपयोग करना आसान है। उदाहरण के लिए elm-package.json को कैसे सेट अप करें, इस पर एक नज़र डालें: https://github.com/simonh1000/file-reader/blob/master/example/elm-package.json - बस "native-modules": true, जोड़ें।

मैंने 0.18 के लिए कोड जारी करने का समर्थन करने के लिए blog लिखा है और दिखाएं कि अपलोड कैसे करें एएम में एस 3 किया जा सकता है।

+1

देशी-मॉड्यूल को सत्य में सेट करके काम करने के लिए मिला, जिसमें elm-mimetype पैकेज और स्रोत-निर्देशिका में फ़ाइल-पाठक का src फ़ोल्डर जोड़ना शामिल है। उसके बाद, हर चीज सीधे आगे थी। – ritcoder

6

file-reader जैसी लाइब्रेरी का उपयोग करें।

सुंदर व्यापक उदाहरणों का एक सेट है, आप this one से शुरू कर सकते हैं।

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

इस उद्देश्य के लिए, मैंने this hacky elm-package install replacement लिखा था। यह आपकी परियोजना की मूल निर्देशिका में exact-dependencies.json फ़ाइल की अपेक्षा करता है। आप इस फ़ाइल को शुरुआत में elm-stuff निर्देशिका से प्राप्त कर सकते हैं कि elm-package आपकी प्रोजेक्ट बनाते समय बनाता है।

{ 
    "evancz/elm-effects": "2.0.1", 
    "evancz/virtual-dom": "2.1.0", 
    "evancz/elm-http": "3.0.0", 
    "evancz/start-app": "2.0.2", 
    "evancz/elm-html": "4.0.2", 
    "elm-lang/core": "3.0.0", 
    "simonh1000/file-reader": "1.0.0" 
} 

आप भी अपनी elm-package.json फाइल करने के लिए file-reader के लिए एक संदर्भ जोड़ने की आवश्यकता होगी:

{ 
    "version": "1.0.0", 
    "summary": "helpful summary of your project, less than 80 characters", 
    "repository": "https://github.com/user/project.git", 
    "license": "BSD3", 
    "source-directories": [ 
     "." 
    ], 
    "exposed-modules": [], 
    "dependencies": { 
     "elm-lang/core": "3.0.0 <= v < 4.0.0", 
     "evancz/elm-effects": "2.0.1 <= v < 3.0.0", 
     "evancz/elm-html": "4.0.2 <= v < 5.0.0", 
     "evancz/elm-http": "3.0.0 <= v < 4.0.0", 
     "evancz/start-app": "2.0.2 <= v < 3.0.0", 
     "simonh1000/file-reader": "1.0.0 <= v < 2.0.0", 
    }, 
    "elm-version": "0.16.0 <= v < 0.17.0" 
} 

इस के बाद, आप चलाने फिर आप exact-dependencies.json फ़ाइल इस तरह के file-reader पैकेज के लिए एक संदर्भ जोड़ने the elm-package install replacement और उम्मीद है कि यह काम करेगा।

+0

कूल। मैंने रेपो को क्लोन कर लिया है और इसे जांच लेंगे। एक छवि के साथ एक फॉर्म अपलोड करने का प्रयास करेगा और यह देखने के लिए एक्सेल फ़ाइल होगी कि यह कैसा चल रहा है। – ritcoder

3

एल्म में फ़ाइल अपलोड संभाल करने के लिए अन्य विकल्प

  • एक बंदरगाह के माध्यम से अपने एल्म एप्लिकेशन में FileReader से एक बेस 64 एन्कोडेड मूल्य प्राप्त है।
  • फिर, उस बेस 64-एन्कोडेड मान को अपने सर्वर पर भेजें (उदा। JSON बॉडी में)।

एक ट्यूटोरियल यहां पाया जा सकता है https://www.paramander.com/blog/using-ports-to-deal-with-files-in-elm-0-17 (यह कहता है कि यह एल्म 0.17 के लिए है, लेकिन यह एल्म 0.18 में अपरिवर्तित काम करता है)।

इस दृष्टिकोण की कमियां हैं

  • अपने सर्वर की जरूरत फ़ाइलों यह प्राप्त करता है जो सर्वर लोड एक छोटे से बढ़ जाती है बेस 64-डिकोड, और
  • बेस 64 एन्कोडिंग बाइट्स की राशि है कि अधिक जाना होगा बढ़ जाती है तार (एक फ़ाइल/ब्लॉब की तुलना में)।

उल्टा:

  • कोई जरूरत मूल कोड के साथ एक पैकेज का उपयोग करने के लिए।

From the Elm Http docs: "अभी यह केवल स्ट्रिंग का समर्थन करता है, लेकिन जब हम एल्म में उनके लिए एपीआई प्राप्त करते हैं तो हम ब्लॉब्स और फाइलों का समर्थन करेंगे।"

संबंधित मुद्दे