美文网首页
阿里云上传图片(无封装)

阿里云上传图片(无封装)

作者: biubiuboom | 来源:发表于2018-08-17 09:56 被阅读24次

    选择相册或者拍照

    *进入相册方法
    
    -(void)loadImagePicker
    
    {
    
    UIActionSheet*sheet =nil;
    
    if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    
    sheet = [[UIActionSheetalloc]initWithTitle:nil
    
    delegate:self
    
    cancelButtonTitle:@"取消"
    
    destructiveButtonTitle:nil
    
    otherButtonTitles:@"拍照",@"从相册选择",nil];
    
    }else{
    
    sheet = [[UIActionSheetalloc]initWithTitle:nil
    
    delegate:self
    
    cancelButtonTitle:@"取消"
    
    destructiveButtonTitle:nil
    
    otherButtonTitles:@"从相册选择",nil];
    
    }
    
    [sheetshowInView:self.view];
    
    }
    
    
    
    选择照片后压缩图片
    /**
    
    *压缩图片尺寸
    
    *
    
    *@param image图片
    
    *@param newSize大小
    
    *
    
    *@return真实图片
    
    */
    
    - (UIImage*)imageWithImageSimple:(UIImage*)image scaledToSize:(CGSize)newSize
    
    {
    
    UIGraphicsBeginImageContext(newSize);
    
    [imagedrawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
    
    UIImage* newImage =UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    returnnewImage;
    
    }
    
    
    
    选择相片或照相机的代理方法
    - (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    
    NSString*title = [actionSheetbuttonTitleAtIndex:buttonIndex];
    
    if([titleisEqualToString:@"拍照"]) {
    
    UIImagePickerController*picker = [[UIImagePickerControlleralloc]init];
    
    picker.delegate=self;
    
    picker.sourceType=UIImagePickerControllerSourceTypeCamera;
    
    [selfpresentViewController:pickeranimated:YEScompletion:nil];
    
    }elseif([titleisEqualToString:@"从相册选择"]) {
    
    UIImagePickerController* picker = [[UIImagePickerControlleralloc]init];
    
    picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
    
    picker.delegate=self;
    
    [selfpresentViewController:pickeranimated:YEScompletion:nil];
    
    }
    
    }
    
    
    
    选择图片后的代理方法
    - (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info {
    
    UIImage*avatar = info[UIImagePickerControllerOriginalImage];
    
    //处理完毕,回到个人信息页面
    
    [pickerdismissViewControllerAnimated:YEScompletion:NULL];
    
    //判断图片是不是png格式的文件
    
    if(UIImagePNGRepresentation(avatar)) {
    
    //返回为png图像。
    
    UIImage*imagenew = [selfimageWithImageSimple:avatarscaledToSize:CGSizeMake(200,200)];
    
    self.imageData=UIImagePNGRepresentation(imagenew);
    
    //self.header_icon.image = imagenew;
    
    }else{
    
    //返回为JPEG图像。
    
    UIImage*imagenew = [selfimageWithImageSimple:avatarscaledToSize:CGSizeMake(200,200)];
    
    self.imageData=UIImageJPEGRepresentation(imagenew,0.8);
    
    //self.header_icon.image = imagenew;
    
    }
    
    //#warning参数设置
    
    NSString*endpoint =@"oss-cn-shanghai.aliyuncs.com";
    
    //@"oss-cn-shanghai.aliyuncs.com/futuredf";
    
    //明文设置secret的方式建议只在测试时使用,更多鉴权模式参考后面链接给出的官网完整文档的`访问控制`章节
    
    id credential = [[OSSPlainTextAKSKPairCredentialProvideralloc]initWithPlainTextAccessKey:kAliAccessKeysecretKey:kAliSecretKey];
    
    client= [[OSSClientalloc]initWithEndpoint:endpointcredentialProvider:credential];
    
    OSSPutObjectRequest* put = [OSSPutObjectRequestnew];
    
    // required fields
    
    //#warning参数设置
    
    put.bucketName=kAliBucketName;
    
    //如果需要上传到指定文件夹 在objectKeys做文章
    
    NSString*objectKeys = [NSStringstringWithFormat:@"weilaitongfu/%@/%@/FaceUrl%@.jpg",kFace,kUserData.userId,[selfgetCurrentTimestamp]];
    
    NSLog(@"2017年07月05日20:09:51%@", objectKeys);
    
    put.objectKey= objectKeys;
    
    //put.uploadingFileURL = [NSURL fileURLWithPath:@"futuredf"];
    
    put.uploadingData=self.imageData;
    
    put.uploadProgress= ^(int64_tbytesSent,int64_ttotalByteSent,int64_ttotalBytesExpectedToSend) {
    
    NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
    
    };
    
    OSSTask* putTask = [clientputObject:put];
    
    [putTaskcontinueWithBlock:^id(OSSTask*task) {
    
    task = [clientpresignPublicURLWithBucketName:kAliBucketName
    
    withObjectKey:objectKeys];
    
    NSLog(@"objectKey: %@", put.objectKey);
    
    if(!task.error) {
    
    [selfrequesFaceImg:task.result];
    
    NSLog(@"upload object success!=====%@",task.result);
    
    }else{
    
    NSLog(@"upload object failed, error: %@", task.error);
    
    }
    
    returnnil;
    
    }];
    
    }
    
    
    
    
    
    如果批量的话用循环
    NSOperationQueue*queue = [[NSOperationQueuealloc]init];
    
    queue.maxConcurrentOperationCount= images.count;
    
    for(inti =0; i
    
    UIImage*image = images[i];
    
    if(image) {
    
    WS(weakSelf);
    
    [[DPAlertHelpershareHelper]hideActivityIndicator];
    
    [[DPAlertHelpershareHelper]showHUDAddedTo:self.viewcolor:[UIColorlightGrayColor]];
    
    NSBlockOperation*operation = [NSBlockOperationblockOperationWithBlock:^{
    
    //任务执行
    
    OSSPutObjectRequest* put = [OSSPutObjectRequestnew];
    
    put.bucketName=kAliBucketName;
    
    NSString*str = [[NSStringalloc]init];
    
    if(i ==0) {
    
    str =kFront;
    
    }elseif(i ==1){
    
    str =kBack;
    
    }elseif(i ==2){
    
    str =kHand;
    
    }
    
    NSString*objectKeys = [NSStringstringWithFormat:@"weilaitongfu/%@/%@/%@_%@.jpg",krealName1,kUserData.userId,str,[weakSelfgetCurrentTimestamp]];
    
    put.objectKey= objectKeys;
    
    NSData*data =UIImageJPEGRepresentation(image,0.3);
    
    put.uploadingData= data;
    
    OSSTask* putTask = [clientputObject:put];
    
    [putTaskwaitUntilFinished];//阻塞直到上传完成
    
    [putTaskcontinueWithBlock:^id(OSSTask*task) {
    
    task = [clientpresignPublicURLWithBucketName:kAliBucketName
    
    withObjectKey:objectKeys];
    
    NSLog(@"objectKey: %@", put.objectKey);
    
    dispatch_async(dispatch_get_main_queue(), ^{
    
    [[DPAlertHelpershareHelper]hideActivityIndicator];
    
    });
    
    if(!task.error) {
    
    [self.imgArraddObject:task.result];
    
    if(i ==2) {
    
    [weakSelfrequesImg:weakSelf.imgArr];
    
    }
    
    //NSLog(@"upload object success!=====%@",task.result);
    
    }else{
    
    NSLog(@"upload object failed, error: %@", task.error);
    
    }
    
    returnnil;
    
    }];
    
    }];
    
    if(queue.operations.count!=0) {
    
    [operationaddDependency:queue.operations.lastObject];
    
    }
    
    [queueaddOperation:operation];
    
    }
    
    }
    
    

    相关文章

      网友评论

          本文标题:阿里云上传图片(无封装)

          本文链接:https://www.haomeiwen.com/subject/aqkzbftx.html