版权所有,请勿转载!
项目中需要完成图片的上传,用于头像和帖子内容的丰富,直接贴代码和注释备忘:
func uploadImg(img:UIImage,urldomain:String,success:(num:Int,ok:Bool,String)->Void)
{
let picurl = "接受图片的url地址"
//图片data(这里我进行了压缩,可以省略)
let PicData = UIImageJPEGRepresentation(img, 0.5)
//这里是headers
let pichead = ["Host":"\(urldomain):8080",
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Origin":"http://\(urldomain):8080",
"Content-Type":"multipart/form-data; boundary=----WebKitFormBoundaryh4V4mNJ7hB0dOlYA",
"Referer":"引用地址",
"Cookie":"所持的cookies"]
//这里是body部分
let plain = DBManager.shareInstance().AutoUUID()
let encrypt = DataEncoding.Endcode_AES_ECB(plain)
Alamofire.upload(.POST, picurl, headers: pichead, multipartFormData: { (MultipartFormData) -> Void in
//将准备好的body数据添加到MultiPart
MultipartFormData.appendBodyPart(data: plain.dataUsingEncoding(NSUTF8StringEncoding)!, name: "plain")
MultipartFormData.appendBodyPart(data: encrypt.dataUsingEncoding(NSUTF8StringEncoding)!, name: "encrypt")
//将图片数据装入Multipart 上传流
MultipartFormData.appendBodyPart(stream: NSInputStream.init(data: PicData!), length: UInt64((PicData?.arrayOfBytes().count)!), name: "pic", fileName: "\(img.description).jpg", mimeType: "image/jpeg")
}, encodingMemoryThreshold: 100) { (Result:Manager.MultipartFormDataEncodingResult) -> Void in
switch Result
{
case .Success( let request, let streamingFromDisk, let streamFileURL):
request.responseJSON(completionHandler: { (response:Response<AnyObject, NSError>) -> Void in
let str = String(data: response.data!, encoding: NSUTF8StringEncoding)
print("-----上传图片界面----------------")
let json = JSON.init(data: response.data!)
print("json ------------\(json)")
if json["flag"].boolValue == true
{
let content = json["content"]
let imgurl = "http://\(urldomain):8080/MISSPicPro\(content)"
print(imgurl)
success(num: Global_Send_num,ok: true,imgurl)
}
else
{
//失败传空
success(num: Global_Send_num,ok: false,"")
}
})
break
case .Failure(let Error):
//失败传空
success(num:Global_Send_num,ok: false,"")
break
default:
break
}
}
}