ファイルをパラメータ値の1つとして与え、Alamofireでアップロード要求としてパラメータを送信できない理由を知りたいのですが。私はこれを試してみるとうまくいきます。ファイルをAlamofireのパラメータ値の1つとして追加できないのはなぜですか?
let parameters: [String : AnyObject ] = [
"email" : "[email protected]",
"password" : "password",
"full_name": "XXX"]
let image: UIImage? = UIImage(named: "logo.png")
Alamofire.upload(
.POST,
"http://myurl.com/register",
multipartFormData: { multipartFormData in
for (key, value) in parameters {
multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
}
if let imageData = UIImageJPEGRepresentation(image!, 1) {
multipartFormData.appendBodyPart(data: imageData, name: "profile_pic", fileName: "logo.png", mimeType: "image/png")
}
},
encodingCompletion: { encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
}
)
イメージをパラメータ値として渡せないのはなぜですか?また、なぜ画像をUIImageJPEGRepresentation
に変更する必要がありますか?
表現を変更せずにイメージを値として渡すと、エラーはNSData
形式ではないことをスローします。
画像がある場合でも要求が合格する必要があることに注意してください。
パラメータで試したときに発生したエラーは何ですか? – zcui93
'UIImageはString型のインスタンスには送られません 'と言っています。パラメータの画像の値を格納し、** forループ**自体のオプションの連鎖を使って画像をチェックする必要があります。しかしここで私は画像が利用可能かどうかを別々にチェックしています。私が伝えようとしていることを理解できますか? –