• iOS 阿里云上传图片 2016-05-27 09:50:43
    1.上阿里云的网站里下载sdk, 网址: ... 2. 把demo中的AliyunOSSiOS.framework拖入工程 3.导入头文件 #import 4.初始化阿里云 @property (s
    
    
    1.上阿里云的网站里下载sdk, 网址:

    https://help.aliyun.com/document_detail/32060.html?spm=5176.doc32059.6.296.QgohfC

    2. 把demo中的AliyunOSSiOS.framework拖入工程

    3.导入头文件

    #import <AliyunOSSiOS/OSSService.h>

    4.初始化阿里云

    @property (strong, nonatomic) OSSClient *client;

    - (void)initALi

    {

        id<OSSCredentialProvider> credential = [[OSSPlainTextAKSKPairCredentialProvider alloc] initWithPlainTextAccessKey:@“your key” secretKey:@“your secretKey”];

        

        OSSClientConfiguration * conf = [OSSClientConfigurationnew];

        

        // 网络请求遇到异常失败后的重试次数

        conf.maxRetryCount = 3;

        

        // 网络请求的超时时间

        conf.timeoutIntervalForRequest =30;

        

        // 允许资源传输的最长时间

        conf.timeoutIntervalForResource =24 * 60 * 60;

        

        // 你的阿里地址前面通常是这种格式 http://oss……

        _client = [[OSSClient alloc] initWithEndpoint:你的阿里地址 credentialProvider:credential];

    }

    5. 在 ImagePicker 方法中

    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    {

    UIImage *img = [info objectForKey:UIImagePickerControllerEditedImage];

        [selfperformSelector:@selector(saveImage:) withObject:img afterDelay:0.1];

    }

    - (void)saveImage:(UIImage *)image {

        BOOL success;

        NSFileManager *fileManager = [NSFileManagerdefaultManager];

        NSError *error;

        

        NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

        NSString *documentsDirectory = [paths objectAtIndex:0];

        // 图片名

        NSString *imageName = [NSStringstringWithFormat:@"%@.jpg", [[NSUUIDUUID] UUIDString]];

        NSString *imageFilePath = [documentsDirectorystringByAppendingPathComponent:[NSStringstringWithFormat:@"%@", imageName]];

        success = [fileManager fileExistsAtPath:imageFilePath];

        if(success) {

            [fileManager removeItemAtPath:imageFilePatherror:&error];

        }


        UIImage *smallImage = [selfthumbnailWithImageWithoutScale:image size:CGSizeMake(93,93)];

        

        [UIImageJPEGRepresentation(smallImage,0.3)writeToFile:imageFilePathatomically:YES];

        UIImage *selfPhoto = [UIImageimageWithContentsOfFile:imageFilePath];//读取图片文件

        

        

        NSData *ImageData =UIImagePNGRepresentation(selfPhoto);

        [self updateToALi:ImageDataimageName:imageName];

    }

    // 改变图片尺寸

    -(UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize

    {

        

        UIImage *newimage;

        

        if (nil == image) {

            

            newimage = nil;

            

        }

        

        else{

            

            CGSize oldsize = image.size;

            

            CGRect rect;

            

            if (asize.width/asize.height > oldsize.width/oldsize.height) {

                

                rect.size.width = asize.height*oldsize.width/oldsize.height;

                

                rect.size.height = asize.height;

                

                rect.origin.x = (asize.width - rect.size.width)/2;

                

                rect.origin.y =0;

                

            }

            

            else{

                

                rect.size.width = asize.width;

                

                rect.size.height = asize.width*oldsize.height/oldsize.width;

                

                rect.origin.x =0;

                

                rect.origin.y = (asize.height - rect.size.height)/2;

                

            }

            

            UIGraphicsBeginImageContext(asize);

            

            CGContextRef context =UIGraphicsGetCurrentContext();

            

            CGContextSetFillColorWithColor(context, [[UIColorclearColor] CGColor]);

            

            UIRectFill(CGRectMake(0,0, asize.width, asize.height));//clear background

            

            [image drawInRect:rect];

            

            newimage = UIGraphicsGetImageFromCurrentImageContext();

            

            UIGraphicsEndImageContext();

            

        }

        

        return newimage;

        

    }



    5. 上传图片

    - (void)updateToALi:(NSData *)data imageName:(NSString *)imageName

    {

        OSSPutObjectRequest * put = [OSSPutObjectRequestnew];

        

        put.bucketName =你的bucketName;

        put.objectKey = 你的图片名;

        

        put.uploadingData = data; // 直接上传NSData

        

        put.uploadProgress = ^(int64_t bytesSent,int64_t totalByteSent, int64_t totalBytesExpectedToSend) {

            NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);

        };

        

        OSSTask * putTask = [_clientputObject:put];

        

        // 上传阿里云

        [putTask continueWithBlock:^id(OSSTask *task) {

            if (!task.error) {

                NSLog(@"upload object success!");


            } else {

                

                NSLog(@"upload object failed, error: %@" , task.error);

            }

            return nil;

        }];


    }



    展开全文
  • 之前的项目中,图片语音等资源文件都是直接上传数据流给服务器,然后服务器进行处理和存储。最近的这个项目,服务器直接开的OSS,然后客户端直接使用阿里云提供的上传下载功能来上传和下载资源。 阿里云对图片的...
  • 因为本地服务器不想把头像的文件服务器放在那里,所以要app端直接上传头像至阿里云,需要用的时候则从阿里...详细的sdk和文档可以去官网看:https://help.aliyun.com/document_detail/oss/sdk/ios-sdk/preface.html?spm=
  • iOS 上传图片到阿里云的oss 之前项目图片语音等资源文件都是直接上传数据流给服务器,然后服务器跟阿里对接,传递路径都是:客户端—&gt;后台—&gt;阿里。近来这个项目绕开后台 直接将图片上传到阿里云的...
  • 使用Alamofire上传图片到阿里OSS时会发现有的时候上传失败,原因是因为Alamofire拼接form-data的时候顺序会出错,所以需要自己使用URLRequest自己进行拼接就可以。 private let MultipartFormCRLF = "\r\n" private ...
  • 使用阿里云OSS 存储上传图片iOS 端显示上传成功,但是后台却没有接收到数据,这是iOS端的问题,还是后台配置的问题 ps.安卓端上传成功,后台也能看到。 pss.选区相册图片后,图片在内存中的地址怎么获取,一般...
  • android 集成 OSS 上传图片 2020-06-03 23:32:57
    android 集成OSS 上传图片
  • 唉!都是泪啊 。用惯了AFNetWorking的我这次是被坑了。这次老大非要求使用http自己写上传图片OSS,搞了两天才搞好,头都大了。
  • 前言客户端开发的时候必须会涉及到上传图等这样的操作解决方案1.需要申请一个阿里的OSS服务 2.在阿里的后台的OSS对象存储里面创建一个...思路:一般的我们的上传方案是将图片上传到我们的服务器 然后再上传到阿里的
  • 在做项目中使用到OSS存储手机上传到服务器的图片, 但发现使用IOS手机进行竖着拍出的照片上传OSS后出现了旋转的情况, 为了解决这个问题, 总结出一个工具类, 需要时也就是在将图片上传OSS之前执行该工具类对图片...
  •  原因:目前客户端上传视频、图片等其他文件越来越大,分片可以很好的解决网络不稳定造成的流量损耗大、上传传耗时长的问题。耗时长也就会出现上传失败的概率就大。 2.关于配置 OSSClientConfiguration  参数...
  • 以下是简单封装好的图片上传方法 + (void)ImageAyyay:(NSArray *)dataSoure success:(void (^)(id res))success{ NSMutableArray * array = [NSMutableArray array]; NSString *endpoint = @"oss-...
  • OSS图片上传 swift 2020-06-11 15:50:20
    2. OSSUploadManager().uploadImage(image:UIImage,type:EnumPicType,success:@escaping OSSUploadBlock)上传单张图片 3.OSSUploadManager().uploadImagesArr(imageArr:Array,type:EnumPicType,success:@escaping ...
  • 业务描述:一款摄影师app, 需要上传大量的图片OSS上面,将10M-20M的原片压缩到1-2M之后,然后一次性选择500张1-2M的图片上传OSS上面。 问题描述: 选择了大量高质量图片之后,会导致内存瞬间暴增,最终导致APP...
  • 问题:钉钉企业内部应用-图片上传到oss失败 描述:在开发钉钉企业内部应用...在ios端的safari和微信浏览器等上传图片无误,仅在ios端的钉钉app上传图片到阿里云服务器失败。 解决方法:寻求钉钉客服的技术协助 ...
  • 最近公司有一个新需求,直接将视频上传OSS 服务器 ,并且要求 1.断点续传 2.要求可以手动暂停继续 上传 3.判断网络不在 Wi-Fi 提示是否上传 明确需求后开始做好准备工作,首先去了解一下 OSS 的 SDK,详细...
  • 由于公司的H5在调用阿里云OSS上传图片时,FUNCTION是异步的而且无法实时返回结果。 造成的问题就是前段无法获取到图片上否已经上传成功然后进行跳转。 之前的想到的方法是固定时间跳转,这当然只能解决一些常规的...
  • 思路:前端js获取 oss上传图片的url地址,将url以json数组形式传入后台,后台json解析将数据存入数据库(这里用的是fastjson) 使用步骤: 1、前端页面有图片上传的图标,并且增加图片上传的input隐藏域,便于拿到...
  • iOS-上传文件到阿里云OSS 2020-04-14 15:52:20
    首先,pod导入阿里云SDK; pod 'AliyunOSSiOS' 其次,配置SDK: NSString *accessKey = @"你从阿里云控制台拿到的key";... NSString *endpoint = @"https://oss-cn-hangzhou.aliyuncs.com"...
  •   H5开发微应用时,Android、PC端使用OSS都可以正常上传文件,IOS在Safari浏览器和微信浏览器中也可以正常上传,但是在IOS钉钉微应用中上传文件失败。   通过寻求钉钉技术协助反馈,参考:...
1 2 3 4 5 ... 20
收藏数 771
精华内容 308