之前一直用的oc图片上传!由于新项目的需要使用了swift语言,既然使用那就少不了图片上传操作。下面是简单图片上传的方法希望能帮到大家:
首先做一个网络请求类的单例
//MallrroNurseDataManager 网络请求类的类名
static let shareManager:MallrroNurseDataManager = {
let baseUrl = NSURL(string:"")!
let manager = MallrroNurseDataManager(baseURL:baseUrl as URL, sessionConfiguration:URLSessionConfiguration.default)
manager.responseSerializer.acceptableContentTypes = NSSet(objects:"application/json","text/json","text/javascript","text/plain","text/html") as? Set<String>
return manager
}()
/**
post请求上传图片
- parameter urlString: 请求的url
- parameter parameters: 请求的参数
- parameter success: 请求成功回调
- parameter failure: 请求失败回调
*/
class func uploadImg(view:Any,urlString:String,parameters:NSMutableDictionary?,img:UIImage, success:((_ responseObject:AnyObject?) -> Void)?,failure:((_ error:NSError) -> Void)?) -> Void {
if !TestNetWorkClass .connectedToNetWork() {
JKAlert.alertText("请检查网络")
return
}
let urlstr ="url" //上传后台服务器的url
let mallrroParameter = NSMutableDictionary() //类型的接口需要的参数
let sessionConfiguration = URLSessionConfiguration.default
let manager = AFHTTPSessionManager(sessionConfiguration: sessionConfiguration)
manager.responseSerializer.acceptableContentTypes = NSSet(arrayLiteral: "application/json", "text/json", "text/javascript","text/html") as? Set<String>
manager.post(urlstr, parameters: mallrroParameter, constructingBodyWith: { (formData) in
let formatter = DateFormatter()
formatter.dateFormat = "yyyyMMddHHmmss"
formatter.timeZone = NSTimeZone.system
let fileName:String = "\(formatter.string(from: NSDate.init() as Date)).jpg"
let imageData = UIImageJPEGRepresentation(img, 0.05)
formData.appendPart(withFileData: imageData!, name: "file", fileName: fileName, mimeType: "image/jpg")
}, progress: { (progress) in
}, success: { (task, response) in
//如果response不为空时
if response != nil {
success!(response as AnyObject?)
}
}) { (task, error) in
failure!(error as AnyObject? as! NSError)
}
}