打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
swift 从相册里取图片并Post传到服务器上

这是用swift写的,原理都一样,直接上代码吧,也算是记录一下折腾过的东西,也提供一个参考吧,用到的时候自已优化一下,这只是个Demo。

这涉及到UIImagePickerController的使用以及网络请求等。

基本的步骤:

1、弹出相册(UIImagePickerController,实现这两个代理 UIImagePickerControllerDelegate,UINavigationControllerDelegate 

2、选取图片

3、确认选中并上传(异步请求)

弹出相册

  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: [NSObject :AnyObject])

    {

        self.dismissViewControllerAnimated(true, completion:nil);

        let gotImage=info[UIImagePickerControllerOriginalImage]asUIImage

     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)

    {

        

      lb.frame=CGRectMake(0,0,self.view.bounds.size.width,20)


        lb.textColor=UIColor.whiteColor()

       lb.text="上传中...."

        lb.textAlignment=NSTextAlignment.Center

        lb.backgroundColor=UIColor.blackColor()

       lb.alpha=1


       //添加风火轮

       av.frame=CGRectMake(200,200,20,20)

        av.backgroundColor=UIColor.whiteColor()

       av.color=UIColor.redColor()

        av.startAnimating()

        

       self.view.addSubview(av)

    

       self.view.addSubview(lb)


        let data=UIImagePNGRepresentation(img)//把图片转成data

        

        let uploadurl:String="http://www.wanwudayin.com/uploadpictest.aspx"//设置服务器接收地址

       let request=NSMutableURLRequest(URL:NSURL(string:uploadurl)!)

        

        request.HTTPMethod="POST"//设置请求方式

        var boundary:String="-------------------21212222222222222222222"

       var contentType:String="multipart/form-data;boundary="+boundary

        request.addValue(contentType, forHTTPHeaderField:"Content-Type")

       var body=NSMutableData()

        body.appendData(NSString(format:"\r\n--\(boundary)\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)

        body.appendData(NSString(format:"Content-Disposition:form-data;name=\"userfile\";filename=\"dd.jpg\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)

        body.appendData(NSString(format:"Content-Type:application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!)

        body.appendData(data)

        body.appendData(NSString(format:"\r\n--\(boundary)").dataUsingEncoding(NSUTF8StringEncoding)!)

        request.HTTPBody=body

        let que=NSOperationQueue()

       NSURLConnection.sendAsynchronousRequest(request, queue: que, completionHandler: {

            (response, data, error) ->Voidin

            

           if (error !=nil){

               println(error)

            }else{

                //Handle data in NSData type

               var tr:String=NSString(data:data,encoding:NSUTF8StringEncoding)!

               println(tr)

                //在主线程中更新UI风火轮才停止

                dispatch_sync(dispatch_get_main_queue(), {

                   self.av.stopAnimating()

                 //self.lb.hidden=true

       

                })

                

            }

        })       

    }


在服务器端接收。我用的是C#,做个简的实现。
HttpPostedFile postfile=Request.Files[0];
postfile.SaveAs(Server.MapPath("test/0000.jpg");
Response.Write("上传成功!");
Response.End();



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
IOS 使用 HTTP POST 上传图片和文本信息
NSdata与NSString,Byte数组,UIImage的相互转换
Object
ios中的http:get,post,同步,异步
IOS加密 AES 256算法(EncryptAndDecrypt.h)
iOS开发 加载本地html
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服