2013-02-22 129 views
0

我有一个包含图像和音频文件的URL。我用下面的代码下载图像和音频文件到文件目录:如何更改iOS中的URL内容?

// urlsArray contains the list of images and audio urls 

for(int i= 0 ;i<[urlsArrray count]; i++) 
     { 

     NSString *urlString = [urlsArrray objectAtIndex:i]; 
     NSString *escapedUrlString = [urlString    stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSURL *url = [NSURL URLWithString:escapedUrlString]; 
    NSData *fileData=[NSData dataWithContentsOfURL:url]; 
    NSString *urlstring1 = [url absoluteString]; 
    NSArray *parts = [urlstring1 componentsSeparatedByString:@"/"]; 
    NSString *fileName = [parts objectAtIndex:[parts count]-1]; 

    NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:fileName]; 
    [fileManager createFileAtPath:savedImagePath contents:fileData attributes:nil]; 

    NSLog(@"files Stored Path is %@",savedImagePath); 

现在我想单独的图像和音频文件。我想下载图像到文件目录和音频文件缓存目录。

+0

你想从这个分离urlsArrray数组还是从documentdirectory? – Vishal 2013-02-22 12:02:33

回答

1

只需添加以下代码来识别该文件是否是图像或音频文件

CFStringRef fileExtension = (CFStringRef) [file pathExtension]; 
CFStringRef fileUTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL); 

if (UTTypeConformsTo(fileUTI, kUTTypeImage)) NSLog(@"It's an image"); 
else if (UTTypeConformsTo(fileUTI, kUTTypeMovie)) NSLog(@"It's a movie"); 
else if (UTTypeConformsTo(fileUTI, kUTTypeText)) NSLog(@"It's text"); 
else NSLog(@"It's audio"); 
+0

对不起,在我的Xcode我们没有得到UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,fileExtension,NULL); 方法,每当我们使用上面的方法,我们得到了一些错误,如:该函数在c99中无效。如果你不介意请说出如何解决上述问题。 @“V-Xtreme” – 2013-02-22 11:44:13

+0

@ChandraSekhar:UTTypeCreatePreferredIdentifierForTag在MobileCoreServices.framework中定义。您必须在构建阶段中导入它。同时在文件中导入#import 2013-02-22 12:05:04

1

OK,如果你从你的阵列分离,然后做如下:

imagelist = [[NSMutableArray alloc]init]; 
videolist = [[NSMutableArray alloc]init]; 

    for(int i = 0;i<urlsArrray.count;i++) 
    { 
    id arrayElement = [fileArray objectAtIndex:i]; 
    if([arrayElement rangeOfString:@".mp3" ].location !=NSNotFound) 
    { 
    [videolist addObject:arrayElement]; 
     NSLog(@"videolist..%@",videolist); 
    } 
    else([arrayElement rangeOfString:@".png"].location !=NSNotFound) 
    { 
    [imagelist addObject:arrayElement]; 
    NSLog(@"imagelist..%@",imagelist); 
    } 
} 
+0

这里不需要格式的文件是固定的。它可能是MP3,WAV或任何其他。 – 2013-02-22 12:10:14

+0

imagelist&videolist是两个nsmutable阵列在.h文件中声明... – Vishal 2013-02-22 12:11:01

+0

@ V-Xtreme ...我们还可以保留另一个选项和条件... – Vishal 2013-02-22 12:11:58