您的位置:首页 > 理论基础 > 计算机网络

Swift-网络上传请求之Multipart

2016-04-16 16:42 417 查看

版权所有,请勿转载!

项目中需要完成图片的上传,用于头像和帖子内容的丰富,直接贴代码和注释备忘:

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
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: