我已閱讀了許多帖子並觀看了一些視頻。將base64編碼的圖像字符串POST到PHP
問題:我不能發佈一個base64字符串圖像PHP服務器並保存到MySQL數據庫沒有損壞。
我已經嘗試什麼:我已經嘗試通過編碼的圖像的字符串,就像我會通過一個字符串或INT作爲POST參數以base64。我驗證了POST數據已成功地將其發送到PHP服務器,並且它正在保存在數據庫中。但是,當我提取base64編碼的字符串並將其解碼以便可以在瀏覽器中呈現圖像時,它不起作用。它只顯示一個破碎的圖像鏈接,而不是圖像。看起來好像有什麼事情在POST過程中破壞數據。我這樣說是因爲我直接從Xcode中的println()語句複製了base64字符串,並將其粘貼到PHP文件中,並將其解碼並完美顯示。我能夠從我的Android應用程序上傳base64字符串完美無瑕。這些問題似乎與我在Swift中的做法有關。
經過一番研究,我看到我可能需要指定的圖像參數周圍的邊界。我對此不太肯定,因爲我不確定當你直接發送圖像文件時是否需要指定邊界,或者發送圖像的base64編碼字符串時是否也需要邊界。
誰能告訴我,如果我需要它發送到PHP服務器之前設置圍繞編碼字符串參數的base64的邊界?任何想法我可能做錯了什麼?
let image: UIImage = imgProfilePic.image!
let size = CGSizeApplyAffineTransform(image.size, CGAffineTransformMakeScale(0.1, 0.1))
let hasAlpha = false
let scale: CGFloat = 0.0 // Automatically use scale factor of main screen
UIGraphicsBeginImageContextWithOptions(size, !hasAlpha, scale)
image.drawInRect(CGRect(origin: CGPointZero, size: size))
let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
var imageData = UIImageJPEGRepresentation(scaledImage, 0.9)
let base64String = imageData.base64EncodedStringWithOptions(.allZeros)
var cd = CoreDataUser(pstrContext: "this")
var params = "strUsername=" + cd.getUsername()
params = params + "&strPassword=" + cd.getPassword()
params = params + "&blbProfilePic=" + base64String
編碼字符串可能包括'+'字符,它被替換爲PHP空白字符一個base64 。 – findall
有沒有辦法防止這種情況發生? – play2win
百分比編碼。 – Rob