天天看点

利用NSURLSession从相册中选择图片并上传

利用UIImagePickerController 从相册中获取一张图片上传到预先设定得服务器中

注意点:
>1. 服务器的文件夹必须是所有人可写的 否则会上传失败

#import "ViewController.h"
#import "NSMutableURLRequest+MultiPartFormData.h"

@interface ViewController ()<UINavigationControllerDelegate , UIImagePickerControllerDelegate]] >
@property (weak, nonatomic) IBOutlet UIImageView *imageView;

@end

@implementation ViewController

- (IBAction)selectPic:(id)sender {
    [self openPhotoLibrary];
}
- (IBAction)upPic:(id)sender {

    [self upImage];
}

#pragma mark - 打开相册选取图片
- (void)openPhotoLibrary
{
    UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
    ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    ipc.delegate = self;
    [self presentViewController:ipc animated:YES completion:nil];
}

#pragma mark - 图片选择控制器的代理
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // 1.销毁picker控制器
    [picker dismissViewControllerAnimated:YES completion:nil];
   
    // 2.获取图片
    UIImage *image = info[UIImagePickerControllerOriginalImage];
    self.imageView.image = image;
}

#pragma mark - 上传图片

- (void)upImage
{
    // 1. url 负责上传文件的脚本
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/post/upload.php"];
   
    // 2. request
    /**
     url : 负责上传文件的脚本的url
     uploadFileName: 保存到服务器上的文件名
     localFile: 本地要上传文件的Data
     */
    NSDate *date = [NSDate date];
    NSDateFormatter *formater = [[NSDateFormatter alloc] init];
    formater.dateFormat = @"yyyyMMddhhmmss";
    NSString *filmame = [formater stringFromDate:date];
    filmame = [NSString stringWithFormat:@"%@.png",filmame];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithUploadURL:url uploadFileName:filmame localFile:UIImageJPEGRepresentation(self.imageView.image, 1.0)];
   
    // 3. session
    [[[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
       
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
        NSLog(@"%@", dict);
    }] resume];
}

@end