2013-11-21 21 views
7

Saw này q & một nhưng không có kết quả tương tự như OP How to post files in swagger?swagger-node-express: Cách tải lên tệp từ swagger-ui?

Sử dụng spec này trong API vênh vang-nút-express tôi

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 + '"}'); 

    } 
}; 

Khi tôi POST qua curl, curl -v -F [email protected] http://127.0.0.1:3000/uploads/file mọi thứ hoạt động như mong đợi. Khi tôi đăng thông qua swagger-ui (v 2.0.2) nó không thành công. Tôi đã sử dụng proxy trong cả hai trường hợp và dao găm-ui không chỉ định loại nội dung cũng như không truyền dữ liệu.

bài thô viết tắt qua curl (sử dụng lệnh trên)

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-- 

viết tắt bài thô qua vênh vang-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 

Làm thế nào tôi nên cấu hình tuyến đường của tôi/spec nên vênh vang-ui sẽ đăng đúng không?

+0

Bạn đã bao giờ giải quyết vấn đề này chưa? Chạy vào cùng một thứ. – clay

+0

Thử đặt '" paramType "' thành "form" chứ không phải là "body". – Ron

Trả lời

0

Tôi đã gặp vấn đề tương tự, nơi tôi có thể thực hiện POST với các giá trị biểu mẫu thông thường, nhưng khi tôi chuyển một tệp, tôi không có dữ liệu. Vấn đề đối với tôi là do sử dụng Express 4 và không cài đặt và cài đặt multer. Chi tiết có thể được tìm thấy tại đây:

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

Các vấn đề liên quan