2013-02-22 151 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