在亚马逊s3中分段上传而不是呼叫代表

时间:2013-06-05 05:35:41

标签: ios objective-c amazon-s3

我正在使用分段上传文件上传工作。但是,不要呼叫代表如何呼叫代表。

这是我的代码:

AmazonS3Client *s31 = [[AmazonS3Client alloc] initWithAccessKey:ACCESS_KEY_ID withSecretKey:SECRET_KEY];
            s31.endpoint = [AmazonEndpoints s3Endpoint:US_WEST_2];
            s31.timeout = 240;
            @try
            {
                [s31 createBucketWithName:bucket];

                S3InitiateMultipartUploadRequest *initReq = [[S3InitiateMultipartUploadRequest alloc] initWithKey:key inBucket:bucket];
                S3MultipartUpload *upload = [s31 initiateMultipartUpload:initReq].multipartUpload;
                S3CompleteMultipartUploadRequest *compReq = [[S3CompleteMultipartUploadRequest alloc] initWithMultipartUpload:upload];

                int numberOfParts = [self countParts:imageData];
                for ( int part = 0; part < numberOfParts; part++ ) {
                    NSData *dataForPart = [self getPart:part fromData:imageData];
                    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
                    [appDelegate.dataArray addObject:dataForPart];

                    // The S3UploadInputStream was deprecated after the release of iOS6.
                    NSInputStream *stream = [NSInputStream inputStreamWithData:dataForPart];
                    //if ( using3G ) {
                    // If connected via 3G "throttle" the stream.
                    //stream.delay = 0.2; // In seconds
                    //stream.packetSize = 16; // Number of 1K blocks
                    // }

                    S3UploadPartRequest *upReq = [[S3UploadPartRequest alloc] initWithMultipartUpload:upload];
                    upReq.partNumber = ( part + 1 );
                    upReq.contentLength = [dataForPart length];
                    upReq.stream = stream;

                    S3UploadPartResponse *response = [s31 uploadPart:upReq];
                    [compReq addPartWithPartNumber:( part + 1 ) withETag:response.etag];
                    NSLog(@"Coming222");
                }
                [s31 completeMultipartUpload:compReq];
                [self textfileupload];
            }
            @catch ( AmazonServiceException *exception )
            {
                isUpload=NO;
                [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];

                NSLog( @"Multipart Upload Failed, Reason: %@", exception  );
            }

请帮帮我。

1 个答案:

答案 0 :(得分:0)

如果您希望它调用委托方法,则需要执行此操作,就像依赖委托方法的任何对象一样:

 putObjectRequest.delegate = self;
 [putObjectRequest setDelegate:self];

如果您的意思是如何使用AppDelegate的实例:AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];,那么请仔细检查类型转换是否是正确的AppDelegate指针。也许尝试另一种初始化/分配的方式,因为我遇到了依赖于一个被转换为可可指针的返回对象的问题。