I am new to ios programming so forgive me for mistakes.
I am developing an app which requires uploading and downloading files basically image files.I am using AWS ios sdk.I am able to download the image file and save it to Document folder(while testing on simulator).
The problem is once the image gets downloaded i have to move it to photo library of iphone.The code is :-
-(IBAction)downloadButtonAction:(id)sender;
{
NSMutableArray *rowsToBeDownloaded = [[NSMutableArray alloc] init];
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
int index = 0;
for (NSNumber *rowSelected in selectedArray)
{
if ([rowSelected boolValue])
{
[rowsToBeDownloaded addObject:[objects objectAtIndex:index]];
NSUInteger pathSource[2] = {0, index};
NSIndexPath *path = [NSIndexPath indexPathWithIndexes:pathSource length:2];
[indexPaths addObject:path];
}
index++;
}
if([rowsToBeDownloaded count]==0)
{
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Alert" message:@"Please select a file to download" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
}
else
{
for (id value in rowsToBeDownloaded)
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:value];
AmazonS3Client *s3Client = [[AmazonS3Client alloc] initWithAccessKey:accessKey withSecretKey:secretKey];
NSOutputStream *stream = [[NSOutputStream alloc] initToFileAtPath:path append:NO];
[stream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[stream open];
S3GetObjectRequest *request = [[S3GetObjectRequest alloc] initWithKey:value withBucket:self.bucket];
request.outputStream = stream;
[s3Client getObject:request];
//UIImageWriteToSavedPhotosAlbum(self.selectedImage, nil,nil,nil);
[stream close];
[stream release];
[request release];
}
}
[indexPaths release];
[rowsToBeDeleted release];
[self populateSelectedArray];
[self transferImagesToPhotolibrary];
}
-(void)transferImagesToPhotolibrary
{
//int index=0;
//
// NSMutableArray*imgArr=[[NSMutableArray alloc] init];
// NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// NSString *documentsDirectory = [paths objectAtIndex:0];
// NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory];
//
//
// for (NSString *path in directoryEnumerator)
// {
// if([[path pathExtension]isEqualToString:@"png"])
// {
// [imgArr addObject:path];
// //UIImage*img=[UIImage imageNamed:path];
// //UIImageWriteToSavedPhotosAlbum(img, nil,nil,nil);
//
// }
// }
NSMutableArray*imgArr=[[NSMutableArray alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtPath:documentsDirectory];
for (NSString *path in directoryEnumerator)
{
if([[path pathExtension]isEqualToString:@"png"])
{
printf("\n path is %s",[path UTF8String]);
[imgArr addObject:path];
}
}
for(int i=0;i<[imgArr count];i++)
{
UIImage*img=[UIImage imageNamed:[imgArr objectAtindex:i]];
UIImageWriteToSavedPhotosAlbum(img, nil,nil,nil);
}
}
I tried many ways to achieve it but was unable to do it.
The image Array contains the names of the image but I am not able to access those images.
I tried displaying the image in image view also but it’s not appering there also..
Please help.
Thanks.
And finally I was able to solve this problem.Here is the code for the people in need.