Решение: была ошибка в моем контракте развязность, правильное определение FileUpload должно выглядеть следующим образом:Кураж NodeJS Файл Загрузить
parameters:
- in: formData
name: file
description: The file to upload
required: true
type: file
Спасибо за подсказку!
Оригинальный вопрос:
У меня есть проблема относительно моего Swagger/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 , поэтому, когда я использую следующий код, он успешно сохраняется в службе.
cloudinary.v2.uploader.upload("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")
Когда я использую
new Buffer(req.swagger.params.image.value, 'binary').toString('base64');
Я ожидал, что файл должен быть преобразован в base64, но я думаю, что часть в REQ, ограничивающей Content-Type и т.д. также преобразуется.
Кто-нибудь знает способ работы с файловыми загрузками и чванством, поэтому я могу загрузить изображение в облачный?
Regex кажется очень «Hacky» ...
Это ImageUpload часть в моем контракте развязность:
/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"
Привет, спасибо за подсказку, которая сделала это, отредактирует мой вопрос, чтобы показать решение. – DaveTheSane
Awesome. Я тоже напишу это в ответ. – brandonscript