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