我想使用生成的swift-client发布图像。经过大量研究后,我认为最好的方法是:
/user/profilepicture:
put:
description: |
upload profile picture of user
consumes:
- multipart/form-data
parameters:
- name: profilePhoto
in: formData
type: file
生成的swift客户端函数签名是:
public class func usersProfilepicturePut(profilePhoto profilePhoto: NSURL? = nil, completion: ((error: ErrorType?) -> Void))
我遇到的问题是NSURL
类型。原因是从NSURL
中获取UIImage
似乎非常困难,特别是如果照片是使用UIImagePickerController
从相机拍摄的。
然后我再次不想将参数的类型更改为字符串,并使用base64编码,因为它会增加很多开销,将图像转换为字符串。
NSURL
获得UIImage
。存在第二个问题,但[Getting the URL of picture taken by camera with Photos Framework中的答案不返回URL而是返回字符串标识符。类似问题的其他答案都建议保存图像然后再次检索它只是为了得到NSURL
看似hacky。
那么我应该将生成的实现更改为接受NSData
类型,还是有更好的建议?答案 0 :(得分:0)
在撰写本文时,看起来像swagger API是将Base64编码为NSData的帖子。因此,如果您不想使用Base64或者不想扩展/修改swagger生成的代码,请避免使用。
要发送二进制数据,您需要本地文件的NSURL。