swift post表单上传图片和数据

来源:互联网 发布:天津基础教研网络 编辑:程序博客网 时间:2024/06/07 02:31

首先需要声明一个ImagePIck的控制器

var imagePicker = UIImagePickerController()
然后当前控制器需要实现代理:UIImagePickerControllerDelegate,UINavigationControllerDelegate
func showpic()            {                imagePicker.delegate=self                imagePicker.sourceType=UIImagePickerControllerSourceType.PhotoLibrary                imagePicker.modalTransitionStyle=UIModalTransitionStyle.CoverVertical                imagePicker.allowsEditing=true                self.presentViewController(imagePicker, animated:true, completion: nil)            }        //UIImagePickerControllerDelegate 代理    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {                self.dismissViewControllerAnimated(true, completion:nil);                let gotImage=info[UIImagePickerControllerOriginalImage] as! UIImage                let midImage:UIImage=self.imageWithImageSimple(gotImage,scaledToSize:CGSizeMake(1000.0,1000.0))//这是对图片进行缩放,因为固定了长宽,所以这个方法会变型,有需要的自已去完善吧, 这里只是粗略使用。                upload(midImage)//上传            }        //缩放图片        func imageWithImageSimple(image:UIImage,scaledToSize newSize:CGSize)->UIImage            {                UIGraphicsBeginImageContext(newSize);                image.drawInRect(CGRectMake(0,0,newSize.width,newSize.height))                let newImage:UIImage=UIGraphicsGetImageFromCurrentImageContext();                UIGraphicsEndImageContext();                return newImage;                            }            //上传    func upload(img:UIImage)    {        let data=UIImagePNGRepresentation(img)//把图片转成data                                let uploadurl:String="http://59.78.93.208:9097/AlertPicture"//设置服务器接收地址                let request=NSMutableURLRequest(URL:NSURL(string:uploadurl)!)                                request.HTTPMethod="POST"//设置请求方式                let boundary:String="-------------------21212222222222222222222"                let contentType:String="multipart/form-data;boundary="+boundary                request.addValue(contentType, forHTTPHeaderField:"Content-Type")                let body=NSMutableData()        //在表单中插入要上传的数据        body.appendData(NSString(format: "--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!);        body.appendData(NSString(format: "Content-Disposition:form-data;name=\"userid\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)                body.appendData("\("123")\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)       //在表单中写入要上传的图片         body.appendData(NSString(format:"--\(boundary)\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)                               body.appendData(NSString(format:"Content-Disposition:form-data;name=\"image\";filename=\"dd.jpg\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)                //body.appendData(NSString(format:"Content-Type:application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)        body.appendData("Content-Type:image/png\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)                body.appendData(data!)                body.appendData(NSString(format:"\r\n--\(boundary)--\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)        //设置post的请求体        request.HTTPBody=body                let que=NSOperationQueue()                NSURLConnection.sendAsynchronousRequest(request, queue: que, completionHandler: {                        (response, data, error) ->Void in                                                if (error != nil){                                print(error)                            }else{                                //Handle data in NSData type                                var tr:String=NSString(data:data!,encoding:NSUTF8StringEncoding)! as String                                print(tr)            }                    })                   }


0 0