上传base64图片到服务器
Posted
技术标签:
【中文标题】上传base64图片到服务器【英文标题】:Upload base64 image to server 【发布时间】:2018-04-17 14:04:31 【问题描述】:我正在使用 Alamofire
和 swiftyJson
我想将图片作为 base64 上传到服务器,我使用此代码上传我的图片
class func uploadMultipleAdvertisementImage(photos: UIImage, completion: @escaping (_ error: Error?, _ sucess: Bool, _ image_id: Int)-> Void)
let url = URLs.uploadImages
var images = [Data]()
Alamofire.upload(multipartFormData: (form: MultipartFormData) in
if let data = UIImageJPEGRepresentation(photos , 0.5)
form.append(data, withName: "images", fileName: "photo.jpeg", mimeType: "image/jpeg")
, usingThreshold: SessionManager.multipartFormDataEncodingMemoryThreshold, to: url, method: .post, headers: nil) (result: SessionManager.MultipartFormDataEncodingResult) in
switch result
case .failure(let error):
print(error)
completion(error, false, 0)
case .success(request: let upload, streamingFromDisk: _, streamFileURL: _):
upload.uploadProgress(closure: (progress: Progress) in
print(progress)
)
.responseJSON(completionHandler: (response: DataResponse<Any>) in
switch response.result
case .failure(let error):
print(error)
completion(error, false, 0)
case .success(let value):
let json = JSON(value)
print(json)
if(json["msg"] == "image uploaded successfully")
let image_id = json["image_id"].int ?? 0
print("hiiiiiiiiii", image_id)
completion(nil, true, image_id)
)
但我想将它作为base 64上传,我该怎么办?
【问题讨论】:
【参考方案1】:您必须将 UIImage 转换为您的网站可以读取的格式,例如使用 base 64 编码之前的 jpeg。
let jpegCompressionQuality: CGFloat = 0.9 // Set this to whatever suits your purpose
if let base64String = UIImageJPEGRepresentation(chosenImage, jpegCompressionQuality)?.base64EncodedString()
// Upload base64String to your database
请参阅 Apple 文档以了解 UIImageJPEGRepresentation 和 Data
【讨论】:
您可以考虑改用base64EncodedData()
,这样您就不需要额外的字符串到数据的转换。
multipart不能追加字符串!【参考方案2】:
Data
有一个函数可以将自身的 base64 表示返回为另一个 Data
。无需转换为String
并返回。
查看Data.base64EncodedData()
的文档
if let data = UIImageJPEGRepresentation(photos, 0.5)?.base64EncodedData()
form.append(data, withName: "images", fileName: "photo.jpeg", mimeType: "image/jpeg")
【讨论】:
【参考方案3】:你可以像这样将图像转换为base64
let encodingOptions = NSData.Base64EncodingOptions(rawValue: 0)
let encodedImageData = pickedImage.base64EncodedString(options: encodingOptions)
然后在您的请求中使用encodedImageData 作为参数
【讨论】:
以上是关于上传base64图片到服务器的主要内容,如果未能解决你的问题,请参考以下文章
data:。image/png,base64,………源图片需要上传到服务器空间吗,如不上传,那源图