美文网首页
阿里云文件上传

阿里云文件上传

作者: 这个姑凉儿 | 来源:发表于2022-06-21 15:48 被阅读0次
    调用
    
                AliyunOSSUpload *up = [[AliyunOSSUpload alloc]init];
               up.accessKey = @"后台返回";
                up.token = @"后台返回";
                up.secretKey = @"后台返回";
    
                NSString *str = [JXTools br_getDateString:[NSDate date] format:@"HHmmss"];
    
                [up uploadImage:self.headerImg.image imagesObject:[NSString stringWithFormat:@"%@1.png",str] success:^(NSString * _Nonnull obj) {
                    [self.headerImg sd_setImageWithURL:[NSURL URLWithString:obj] placeholderImage:nil];
                }];
    
    #import <Foundation/Foundation.h>
    
    NS_ASSUME_NONNULL_BEGIN
    
    
    
    @interface AliyunOSSUpload : NSObject
    
    /** endpoint  */
    @property(nonatomic,strong)NSString *endpoint;
    /** accessKey  */
    @property(nonatomic,strong)NSString *accessKey;
    /** secretKey  */
    @property(nonatomic,strong)NSString *secretKey;
    @property(nonatomic,strong)NSString *token;
    
    /** bucketName  */
    @property(nonatomic,strong)NSString *bucketName;
    
    
    /*
    imgArr 图片
    imagesObject 图片名称(需要和后台商量图片名称的格式)
    */
    //单图上传
    -(void)uploadImage:(UIImage*)img imagesObject:(NSString *)imagesObject success:(void (^)(NSString *obj))success;
    
    
    
    
    
    @end
    
    NS_ASSUME_NONNULL_END
    
    
    
    #import "AliyunOSSUpload.h"
    #import <AliyunOSSiOS/OSSService.h>
    
    
    #define AliyunImgUrl @""
    
    
    @interface AliyunOSSUpload ()
    
    /** OSSClient  */
    @property(nonatomic,strong)OSSClient *client;
    
    
    @end
    
    
    @implementation AliyunOSSUpload
    
    - (id)init {
        if (self = [super init]) {
            
            //默认参数:(必传)
            self.endpoint = @"";
            self.bucketName = @"问自己的后台"; 
        }
        return self;
    }
    -(void)uploadImage:(UIImage *)img imagesObject:(NSString *)imagesObject success:(void (^)(NSString * _Nonnull))success{
    
            OSSPutObjectRequest * put = [OSSPutObjectRequest new];
            put.contentType=@"image/jpeg";
            put.bucketName = self.bucketName;
            put.objectKey = [self objectKey:imagesObject];
            put.uploadingFileURL = [NSURL fileURLWithPath:[self getImagePath:img]];
            put.uploadProgress = ^(int64_t bytesSent, int64_t totalByteSent, int64_t totalBytesExpectedToSend) {
                NSLog(@"%lld, %lld, %lld", bytesSent, totalByteSent, totalBytesExpectedToSend);
            };
            
         // 移动端建议使用STS方式初始化OSSClient。
            id<OSSCredentialProvider> credential = [[OSSFederationCredentialProvider alloc] initWithFederationTokenGetter:^OSSFederationToken * _Nullable{
                OSSFederationToken *token = [OSSFederationToken new];
                // 从STS服务获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
                token.tAccessKey =  self.accessKey;
                token.tSecretKey = self.secretKey;
                // 从STS服务获取的安全令牌(SecurityToken)。
                token.tToken =  self.token;
                return token;
            }];
                
            self.client = [[OSSClient alloc] initWithEndpoint:self.endpoint credentialProvider:credential];
            OSSTask * putTask = [self.client putObject:put];
            [putTask continueWithBlock:^id(OSSTask *task) {
                if (!task.error) {
                    NSLog(@"upload object success!");
    
                    NSString *imgstr = [NSString stringWithFormat:@"%@%@",AliyunImgUrl,[self objectKey:imagesObject]];
                    success(imgstr);
                    
                } else{
                    NSLog(@"upload object failed, error: %@" , task.error);
                    [JXTools showAlertWithMessage:@"图片上传失败!"];
                }
                return nil;
            }];
        
    }
    -(NSString *)objectKey:(NSString *)imagesObject{
        NSString *str = [JXTools br_getDateString:[NSDate date] format:@"yyyy/MM/dd"];
        NSString *objectKey = [NSString stringWithFormat:@"ios/test/%@/%@",str,imagesObject];
        return objectKey;
    }
    
    
    //照片获取本地路径转换
    - (NSString *)getImagePath:(UIImage *)Image {
       
        NSString *filePath = nil;
        NSData *data = nil;
        if (UIImagePNGRepresentation(Image) == nil) {
            data = UIImageJPEGRepresentation(Image, 1.0);
        } else {
            data = UIImagePNGRepresentation(Image);
        }
    
        //图片保存的路径
        //这里将图片放在沙盒的documents文件夹中
        NSString *DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    
        //文件管理器
        NSFileManager *fileManager = [NSFileManager defaultManager];
    
        //把刚刚图片转换的data对象拷贝至沙盒中
        [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil];
        NSString *ImagePath = [[NSString alloc] initWithFormat:@"/jxImage.png"];
        [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:ImagePath] contents:data attributes:nil];
        //得到选择后沙盒中图片的完整路径
        filePath = [[NSString alloc] initWithFormat:@"%@%@", DocumentsPath, ImagePath];
        return filePath;
    }
    
    @end
    
    

    相关文章

      网友评论

          本文标题:阿里云文件上传

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