利用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

發佈了51 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章