2016-08-19 8 views
1

ソリューションをアップロードします: は私の闊歩契約でエラーが発生しました、ファイルアップロードの正しい定義は次のようになります。闊歩NodeJSファイル

parameters: 
    - in: formData 
    name: file 
    description: The file to upload 
    required: true 
    type: file 

がヒントをありがとう!

オリジナル質問:

私は私の闊歩/ NodeJSのAPIに関する問題を抱えています。

ファイルアップロードを受信し、取得したファイルを別のクラウドサービスに保存したいと考えています。

悲しいことに、ファイルは私が期待している形式で届きません。 これは私が郵便配達経由req.swagger.params.image.valueで受け取るものです:

------WebKitFormBoundaryZCFoUQnf4lHIhzjj 
Content-Disposition: form-data; name="image"; filename="r14kvzvmsh3xnuyl2vq8.png" 
Content-Type: image/png 

�PNG 

IHD�o&�IDA�c���?� � ��1��X��5�юIEND�B`� 
------WebKitFormBoundaryZCFoUQnf4lHIhzjj-- 

テスト画像as a PNGまたはbase64のよう:

iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg== 

画像のための私のcloudproviderがcloudinaryですしたがって、次のコードを使用すると、サービスに正常に保存されます。私は

new Buffer(req.swagger.params.image.value, 'binary').toString('base64'); 

を使用する場合

cloudinary.v2.uploader.upload("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==") 

私は、ファイルがBASE64に変換されると予想、私はなどのContent-Typeを定義するREQのパーツも変換されると思います。

誰かがfileuploadsとswaggerで作業する方法を知っているので、私は正常に画像をアップロードすることができますか?

正規表現は、これは私の闊歩契約でimageuploadの一部である

...非常に「ハック」と思われる:あなたの代わりにbase64での生のバイナリ画像をアップロードしているよう

/imageUpload: 
x-swagger-router-controller: image_upload 
post: 
    description: Endpoint to upload the image file. The image has to be uploaded before the shipment is created, a response will be the image ID that has to be supplied to the shipment. If the image ID is not valid, i.e. not known to this api, the shipment can not be created 
    operationId: storeImage 
    consumes: 
    - multipart/form-data 
    - application/x-www-form-urlencoded 
    - binary 
    parameters: 
    - in: body 
    name: image 
    description: The file to upload 
    required: true 
    schema: 
     type: string 
     format: file 
    responses: 
    "200": 
     description: Success 
     schema: 
     # a pointer to a definition 
     $ref: "#/definitions/ImageResponse" 
    # responses may fall through to errors 
    default: 
     description: Error 
     schema: 
     $ref: "#/definitions/ErrorResponse" 
+0

こんにちは、それをしていただきありがとうございます、解決策を表示するために私の質問を編集します。 – DaveTheSane

+0

驚くばかりです。私はそれも答えに書くだろう。 – brandonscript

答えて

0

は私に見えますエンコードされた画像。私はすべてのバイナリを取り除き、あなたのスガーガー・ドックでbase64のみを定義し、Buffer-> base64エンコーディングが期待どおりに動作していることを確認します(コンソールロギングを行う)。