i used alamofire upload chosen image server , it's working don't know how can make same thing selected video device after select , store path of video @ variable , how can use alamofire upload video server ?
my code:
import uikit import alamofire import avkit import avfoundation import mediaplayer import mobilecoreservices class sendfinalnews: uiviewcontroller, uiimagepickercontrollerdelegate,uinavigationcontrollerdelegate { @iboutlet weak var titletext: uitextfield! @iboutlet weak var msgdetailtext: uitextview! @iboutlet weak var sendindicator: uiactivityindicatorview! @iboutlet weak var loadedimage: uiimageview! var customer_key = "dkeqnq9fmkhq" var titlemsg = "" var detailmsg = "" var videourl:string! var playerviewcontroller = avplayerviewcontroller() var playerview = avplayer() override func viewdidload() { super.viewdidload() } @ibaction func addvideobutton(sender: anyobject) { var videopickercontroller = uiimagepickercontroller() videopickercontroller.delegate = self videopickercontroller.sourcetype = .savedphotosalbum videopickercontroller.mediatypes = [kuttypemovie string] self.presentviewcontroller(videopickercontroller, animated: true, completion: nil) } @ibaction func addimagebutton(sender: anyobject) { let imagepicker = uiimagepickercontroller() imagepicker.delegate = self imagepicker.sourcetype = uiimagepickercontrollersourcetype.photolibrary self.presentviewcontroller(imagepicker, animated: true, completion: nil) } func imagepickercontroller(picker: uiimagepickercontroller, didfinishpickingmediawithinfo info: [string : anyobject]) { let mediatype = info[uiimagepickercontrollermediatype] as! nsstring let url = info[uiimagepickercontrollermediaurl] print(url) if mediatype.isequaltostring(kuttypeimage string) { loadedimage.image = info[uiimagepickercontrolleroriginalimage] as? uiimage } else if mediatype.isequaltostring(kuttypemovie string) { let urlofvideo = info[uiimagepickercontrollermediaurl] as? nsurl if let url = urlofvideo { print("video loadaed") videourl = string(urlofvideo) print(videourl) } } self.dismissviewcontrolleranimated(true, completion: nil ) } @ibaction func backbutton(sender: anyobject) { self.dismissviewcontrolleranimated(true, completion: nil ) } @ibaction func sendbutton(sender: anyobject) { titlemsg = titletext.text! detailmsg = msgdetailtext.text! self.sendindicator.startanimating() dispatch_async(dispatch_get_global_queue(dispatch_queue_priority_default, 0), { () -> void in // ... // heavy loop codes here // ... self.uploadfile() dispatch_async(dispatch_get_main_queue(), { () -> void in self.sendindicator.stopanimating() }) }); } func uploadfile() { //let image = uiimage(named: "ios9.jpg") let newimage : nsdata = uiimagejpegrepresentation(loadedimage.image!, 32)! let newrandomname = randomstringwithlength(32) let fname = (newrandomname string) + ".jpg" let parameters = [ "pic" :netdata(data: newimage, mimetype: .imagejpeg, filename: fname), "msg" :self.detailmsg, "customer_key" : self.customer_key ] let urlrequest = self.urlrequestwithcomponents("myurlhere", parameters: parameters) alamofire.upload(urlrequest.0, data: urlrequest.1) .progress { (byteswritten, totalbyteswritten, totalbytesexpectedtowrite) in print("\(totalbyteswritten) / \(totalbytesexpectedtowrite)") } .responsejson { response in debugprint(response) } } func urlrequestwithcomponents(urlstring:string, parameters:nsdictionary) -> (urlrequestconvertible, nsdata) { // create url request send let mutableurlrequest = nsmutableurlrequest(url: nsurl(string: urlstring)!) mutableurlrequest.httpmethod = alamofire.method.post.rawvalue //let boundaryconstant = "myrandomboundary12345" let boundaryconstant = "net-post-boundary-\(arc4random())-\(arc4random())" let contenttype = "multipart/form-data;boundary="+boundaryconstant mutableurlrequest.setvalue(contenttype, forhttpheaderfield: "content-type") // create upload data send let uploaddata = nsmutabledata() // add parameters (key, value) in parameters { uploaddata.appenddata("\r\n--\(boundaryconstant)\r\n".datausingencoding(nsutf8stringencoding)!) if value netdata { // add image let postdata = value as! netdata //uploaddata.appenddata("content-disposition: form-data; name=\"\(key)\"; filename=\"\(postdata.filename)\"\r\n".datausingencoding(nsutf8stringencoding)!) // append content disposition let filenameclause = " filename=\"\(postdata.filename)\"" let contentdispositionstring = "content-disposition: form-data; name=\"\(key)\";\(filenameclause)\r\n" let contentdispositiondata = contentdispositionstring.datausingencoding(nsutf8stringencoding) uploaddata.appenddata(contentdispositiondata!) // append content type //uploaddata.appenddata("content-type: image/png\r\n\r\n".datausingencoding(nsutf8stringencoding)!) // mark this. let contenttypestring = "content-type: \(postdata.mimetype.getstring())\r\n\r\n" let contenttypedata = contenttypestring.datausingencoding(nsutf8stringencoding) uploaddata.appenddata(contenttypedata!) uploaddata.appenddata(postdata.data) }else{ uploaddata.appenddata("content-disposition: form-data; name=\"\(key)\"\r\n\r\n\(value)".datausingencoding(nsutf8stringencoding)!) } } uploaddata.appenddata("\r\n--\(boundaryconstant)--\r\n".datausingencoding(nsutf8stringencoding)!) return (alamofire.parameterencoding.url.encode(mutableurlrequest, parameters: nil).0, uploaddata) } func randomstringwithlength (len : int) -> nsstring { let letters : nsstring = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789" var randomstring : nsmutablestring = nsmutablestring(capacity: len) (var i=0; < len; i++){ var length = uint32 (letters.length) var rand = arc4random_uniform(length) randomstring.appendformat("%c", letters.characteratindex(int(rand))) } return randomstring } }
netdata class:
import foundation import uikit enum mimetype: string { case imagejpeg = "image/jpeg" case imagepng = "image/png" case imagegif = "image/gif" case json = "application/json" case unknown = "" func getstring() -> string? { switch self { case .imagepng: fallthrough case .imagejpeg: fallthrough case .imagegif: fallthrough case .json: return self.rawvalue case .unknown: fallthrough default: return nil } } } class netdata { let data: nsdata let mimetype: mimetype let filename: string init(data: nsdata, mimetype: mimetype, filename: string) { self.data = data self.mimetype = mimetype self.filename = filename } init(pngimage: uiimage, filename: string) { data = uiimagepngrepresentation(pngimage)! self.mimetype = mimetype.imagepng self.filename = filename } init(jpegimage: uiimage, compressionquanlity: cgfloat, filename: string) { data = uiimagejpegrepresentation(jpegimage, compressionquanlity)! self.mimetype = mimetype.imagejpeg self.filename = filename } }
Comments
Post a Comment