RestAPI (npm と pg-promise を使用) を介して iOS アプリ (swift) を postgres データベースに接続しようとしています。
文字列と整数値を投稿するのは魅力的ですが、データベースに画像を投稿するのに問題があります
画像をbase64文字列にデコードして、POSTリクエストに送信できるようにしてから、文字列をテーブルに投稿するか、投稿する前にbyteaにデコードします...両方の方法でいくつかの写真が機能し、他の写真では機能しませんでした私は「正しい形式ではありません」というエラー...
これが私のコードです
ios Swift
private static func request(todo: JSON -> ()) {
let imageb = UIImageJPEGRepresentation(image, 0.7)
let str64 = Helper.nsdataToStr64(imageb)
Alamofire.request(.POST,
"http://127.0.0.1:3000/api/photos",
parameters: ["visit_id": 1, "photo" : str64])
.responseJSON { (response) in
switch response.result {
case .Success:
let results: JSON = JSON(data: response.data!)["data"]
todo(results)
case .Failure(let error):
print("Failed: \(error)")
}
}
}
queries.js
function uploadPhoto(req, res, next) {
req.body.visit_id = parseInt(req.body.visit_id);
//db.one('insert into photos(visit_id, photo) values(${visit_id}, decode(${photo}, \'base64\')) returning _id',
// req.body)
db.one('insert into photos(visit_id, base64) values(${visit_id}, ${photo}) returning _id',
req.body)
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Inserted one photo'
});
})
.catch(function (err) {
return next(err);
//console.log("ERROR:", err.message || err);
});
}
今、この方法はこの写真やその他多くのもので完璧に機能しますが、この写真やその他多くのものでは失敗します..理由はありますか? 画像が数百キロバイトを超える場合、post メソッドが失敗することに気付きました.これは可能ですか? なぜ?この問題を解決する方法はありますか?
注:写真はすべてjpg形式なので形式は問いません