我正在创建一个应用程序,我必须从服务器下载一些图像并将其存储以在网络不可用(并保存数据)时使用。 我面临的问题是,我有一个基址(www.url.com/
),所有的图像地址来自JSON连接,但它是这样的:Upload/Ctop/GC60V/JPEG/GC60V_concept.jpg
。因为我有一些不同的图像,每幅图像想出了一个不同的路径,我需要将其存储在的两种方法之一:使用url动态创建文件夹
- 在
Documents/Upload/
或 - 只是文件名以完整路径创建文件夹在Documents目录中。
对于这两种方式,我必须能够(当然)恢复图像。
我现在正在做的是: - 我检查服务器是否有更新。如果它存在,我试图抹掉的/Upload/
文件夹,然后重新创建:
// Erase previous images
NSFileManager *filemgr = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [NSString stringWithFormat:@"%@%@", [paths objectAtIndex:0], @"/Upload/"];
NSLog(@"%@", [[NSFileManager defaultManager]contentsOfDirectoryAtPath:documentsDirectory error:nil]);
if ([filemgr removeItemAtPath: documentsDirectory error: NULL] == YES) {
NSLog(@"Folder removed: %@", documentsDirectory);
}
然后,我收到了JSON数据,我尝试“创建文件夹”并保存新文件:
// Download of categories images
if (![[NSString stringWithFormat:@"%@%@", URL_BASE, [[categories objectAtIndex:j] valueForKey:@"Path"]] isEqualToString:URL_BASE]) {
url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@", URL_BASE, [[categories objectAtIndex:j] valueForKey:@"Path"]]];
urlData = [NSData dataWithContentsOfURL:url];
}
if (urlData)
{
NSLog(@"Starting categories image download...");
NSLog(@"URL: %@", url);
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory, [[categories objectAtIndex:j] valueForKey:@"Path"]];
[urlData writeToFile:filePath atomically:YES];
NSLog(@"Download finished.");
} else {
NSLog(@"No categories image to download.");
}
据我了解,我错过了正确创建文件夹的过程,但我无法弄清楚我该怎么做。另外,我不知道该怎么读。
任何帮助将不胜感激!
谢谢。
之前创建目录'writeToFile:'''[NSFileManager defaultManager] createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:&err或者];' – Akhilrajtr
我不相信这很简单@Akhilrajtr(实际上我是这么做的!)。它现在正在创建文件夹!但我仍然必须解决与文件名的问题,因为我试图用完整的路径保存文件的名称(类似于/Upload/Folder/etc/image.jpg),我相信我必须剪切文件夹名字,只是让图像的名称。有没有简单的方法来做到这一点?感谢您的帮助。 – Tchelow
所以你只需要'Documents/Upload/imageName.jpg'作为路径? – Akhilrajtr