2013-11-21 11 views
7

इस क्ष & एक देखा था, लेकिन ओ पी How to post files in swagger?swagger-node-express: swagger-ui से फ़ाइल कैसे अपलोड करें?

के रूप में एक ही परिणाम नहीं था मेरी अकड़ नोड-एक्सप्रेस एपीआई

exports.saveFile = { 
    'spec' : { 
    "description" : "Saves a file to filesystem", 
    "path" : "/uploads/file", 
    "notes" : "", 
    "summary" : "POST a file to storage", 
    "method" : "POST", 
/* "supportedContentTypes" : [ 'multipart/form-data' ], */ 
    "produces":[ "application/json" ], 
    "consumes":[ "multipart/form-data" ], 
    "params" : [{ 
     "name": "File", 
     "description": "The file to upload.", 
     "paramType": "body", 
     "required": true, 
     "allowMultiple": false, 
     "dataType": "file" 
    } 
    ], 
    "responseClass" : "ArbitraryJson", 
    "errorResponses" : [ errors.invalid('file') ], 
    "nickname" : "saveFile" 
    }, 
    'action' : function(req, res) { 

    res.send('{"msg":"success", "file path": "' + req.files.file.path + '"}'); 

    } 
}; 

में इस युक्ति का उपयोग करते हुए जब मैं कर्ल के माध्यम से पोस्ट, curl -v -F [email protected] http://127.0.0.1:3000/uploads/file सब कुछ उम्मीद के रूप में काम करता है। जब मैं swagger-ui (v 2.0.2) के माध्यम से पोस्ट करता हूं तो यह विफल रहता है। मैंने दोनों परिस्थितियों में प्रॉक्सी का उपयोग किया और swagger-ui सामग्री-प्रकार निर्दिष्ट नहीं कर रहा है और न ही यह डेटा पास कर रहा है। कर्ल के माध्यम से

संक्षिप्त कच्चे पद

POST http://127.0.0.1:3000/uploads/file HTTP/1.1 
User-Agent: curl/7.27.0 
Host: 127.0.0.1:3000 
Accept: */* 
Content-Length: 43947 
Expect: 100-continue 
Content-Type: multipart/form-data; boundary=----------------------------9af70f8a272c 

------------------------------9af70f8a272c 
Content-Disposition: form-data; name="file"; filename="scrot.png" 
Content-Type: application/octet-stream 
... 
------------------------------9af70f8a272c-- 

अकड़-ui के माध्यम से कच्चे पद संक्षिप्त (ऊपर आदेश का उपयोग)

POST http://127.0.0.1:3000/uploads/file HTTP/1.1 
Host: 127.0.0.1:3000 
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0 
Accept: application/json 
Accept-Language: en-US,en;q=0.5 
Referer: http://127.0.0.1:3000/docs/ 
Content-Length: 0 
Content-Type: text/plain; charset=UTF-8 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 

मैं अपने मार्ग/कल्पना कॉन्फ़िगर करना चाहिए ऐसा कैसे अकड़-ui पोस्ट करेंगे सही ढंग से?

+0

क्या आपने कभी इसे हल किया था? एक ही चीज़ में चल रहा है। – clay

+0

"शरीर" के बजाय '" paramType "' to "form" को सेट करने का प्रयास करें। – Ron

उत्तर

0

मेरे पास यह वही समस्या थी, जहां मैं सामान्य फॉर्म मानों के साथ एक पोस्ट कर सकता था, लेकिन जब मैंने एक फाइल पास की, तो मुझे कोई डेटा नहीं मिला। मेरे लिए मुद्दा एक्सप्रेस 4 का उपयोग करने के कारण था, और मल्टर स्थापित और सेटअप नहीं था। विवरण यहां पाया जा सकता है:

https://github.com/swagger-api/swagger-node-express/issues/202

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