2012-01-11 37 views
13

में फ़ाइल अपलोड करने के लिए नोडजेएस का उपयोग करें मैं एक एपीआई बनाने के लिए सर्वर के रूप में कार्य करने के लिए नोडजेएस का उपयोग करने के लिए देख रहा हूं।एपीआई कॉल

आदर्श रूप से मैं जानकारी के एक सेट को भेजने के लिए एक एपीआई एंडपॉइंट बनने के लिए प्यार करता हूं और साथ ही फाइल जो फाइल सिस्टम में सहेजा जा सकता है।

मैंने देखा है कि अधिकांश उदाहरण एक फॉर्म के माध्यम से एक फाइल भेजने के लिए हैं, हालांकि मैं इसे एक पोस्ट अनुरोध के माध्यम से करना चाहता हूं।

क्या कोई जानता है कि मैं इसे कैसे प्राप्त कर सकता हूं (यदि यह संभव है तो)?

पल मैं प्राप्त करना चाहते हैं पर निम्नलिखित लाइनों के साथ कुछ है:

app.post('/Some/Endpoint/', controller.handleSomeEndpoint, function(request, response) { 
    response.send('Finished Request'); 
}); 

exports.handleSomeEndpoint = function(request, response, next) { 
    var bodyarr = [] 
    request.on('data', function(chunk){ 
     bodyarr.push(chunk); 
    }) 
    request.on('end', function(){ 
     console.log(bodyarr.join('')); 
    }) 
} 

लेकिन डेटा और अंत अगर मैं की तर्ज पर एक कर्ल आदेश चला कभी नहीं कहा जाता हो:

curl http://127.0.0.1:5000/Some/Endpoint/ -F '[email protected]_file' 

चीयर्स, मैट

+1

फ़ाइलों को भेजते समय एक फॉर्म एक POST अनुरोध है। चीजों का नोड पक्ष किसी भी अलग नहीं होना चाहिए। – Paul

+1

लेकिन बिना किसी फॉर्म के req.files कैसे बनाएं? कोई उदाहरण? –

उत्तर

4

जवाब है कि expressJS NodeJS में http मॉड्यूल के रूप में एक पोस्ट फ़ाइल से निपटने में एक ही विधि का उपयोग नहीं करता है लगता है।

सभी कि जरूरत थी एक निर्देशिका सहित था के लिए फ़ाइलों को लिखे जाने की:

app.use(express.bodyParser({uploadDir:'./uploads'})); 

कौन सा मैं यहाँ पाया:

http://www.hacksparrow.com/handle-file-uploads-in-express-node-js.html

+0

इस तरह से जब भी मैं आपको POST अनुरोध के माध्यम से एक फ़ाइल भेजता हूं, तो आप इसे स्वीकार करेंगे और अपने ./uploads में सहेज लेंगे। मुझे नहीं लगता कि यह सुरक्षित है। – nick

+0

मुझे नहीं लगता कि यह असुरक्षित है कि यह अस्थायी भंडारण है, स्थायी नहीं है जिसका अर्थ यह स्वीकार किया जाता है, इसका मतलब यह नहीं है कि यह स्थायी रूप से संग्रहीत या उपयोग किया जाता है। अनुरोध प्रमाणीकृत होना चाहिए (जो मेरे मामले में है)। –

+0

लेकिन अगर कोई फॉर्म इस्तेमाल नहीं किया गया है तो req.files कैसे पास करें? मैं केवल एपीआई के माध्यम से फ़ाइल अपलोड करने की कोशिश कर रहा हूं। –

0

आपका कोड ठीक काम करना चाहिए; यह कर्ल उपयोग है जो गलत है। ऐसा करें:

$ curl -X POST --data-binary @test_file http://localhost:8080 
+0

यह वास्तव में फ़ाइल को गड़बड़ कर देता है ... – Devenv

2

मैं तुम्हें Formidable उपयोग करने के लिए से बचने के लिए सुझाव है कि अनाम फ़ाइल अपलोडिंग।

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