【发布时间】:2020-09-11 20:19:35
【问题描述】:
我正在尝试以 base64string 格式上传图片。在这里,我使用 alamofire 和 swift 上传带有一些参数的图像。但是我的图片没有上传到服务器。请检查我的代码,让我知道我在哪里做错了。我的代码是:
func postRegistrationPlayerProfile(urlExtension: String, callback: @escaping(Bool,String?) -> Void,parameters:[String:Any]) -> Void {
let fullURL = URL(string: urlExtension)!
let manager = Alamofire.SessionManager.default
manager.session.configuration.timeoutIntervalForRequest = TimeInterval(Common.sharedInstance().REQUEST_TIME_OUT)
manager.upload(multipartFormData: { (multipartFormData) in
for (key, value) in parameters {
multipartFormData.append("\(value)".data(using: String.Encoding.utf8)!, withName: key as String)
}
}, usingThreshold: UInt64.init(), to: fullURL, method: .post) { (result) in
switch result {
case .success(let upload, _, _):
upload.responseJSON { (response : DataResponse<Any>) in
let responseDataString = Common.sharedInstance().getJSONStringFromData(data: response.data! as NSData)
print(responseDataString)
if let result = response.result.value {
let dictionary = result as! NSDictionary
let status = dictionary["status"] as! String
let message = dictionary["message"] as? String
if status == "success"{
callback(true,message)
return
}
else{
callback(false,message)
return
}
}
else{
callback(false,Common.sharedInstance().FAILED_BANNERIMG_UPLOAD)
return
}
}
case .failure(let encodingError):
print("encodingError: \(encodingError)")
callback(false,Common.sharedInstance().FAILED_BANNERIMG_UPLOAD)
}
}
}
我的参数是:
paramters.updateValue(phone!, forKey: "phone")
paramters.updateValue(state!, forKey: "state")
paramters.updateValue(city!, forKey: "city")
paramters.updateValue(zip!, forKey: "postcode")
paramters.updateValue(travel, forKey: "travel_distance")
paramters.updateValue(base64ImageString!, forKey: "profile_image")
paramters.updateValue(country!, forKey: "country")
我正在将我的图像转换为 base64 字符串,例如:
if let selectedImage = chooseProfileImage.image{
if let data = selectedImage.jpegData(compressionQuality: 1){
base64ImageString = data.base64EncodedString(options: .lineLength64Characters)
}
}
【问题讨论】:
-
你尝试过使用邮递员吗?
-
是的,在邮递员中它工作正常
-
首先打印
base64ImageString值并在线尝试base64到图像转换器,以确保您转换的字符串是正确的。有时转换后的字符串缺少data:image/jpeg;base64部分。 -
嗨@Dilan 我转换的base64ImageString 不正确。我用在线工具检查了它。现在做什么?如何解决?
-
你能检查转换后的以
data:image/jpeg;base64开头的字符串吗?如果没有尝试将此部分添加到转换后的字符串的开头。例如data:image/jpeg;base64,{your converted strin}