Я создаю приложение, где мне нужно загрузить некоторые изображения с сервера и сохранить его для использования, когда сеть недоступна (и для сохранения данных). Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть базовый url (www.url.com/
), и весь адрес изображения поступает из соединения JSON, но он выглядит следующим образом: Upload/Ctop/GC60V/JPEG/GC60V_concept.jpg
. Поскольку у меня есть несколько различных изображений, каждое изображение пришло с другим путем, и мне нужно, чтобы сохранить его в одном из двух способов:Создание папок динамически с помощью url
- Просто имя файла в
Documents/Upload/
или - Создания папки с указанием полным путем в папке «Документы».
В обоих случаях я должен иметь возможность (конечно) восстановить изображения.
Что я сейчас делаю: - Я проверяю, есть ли обновление на сервере. Если она существует, я пытаюсь стереть папку /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:' by [[NSFileManager defaultManager] createDirectoryAtPath: filePath withIntermediateDirectories: атрибуты YES: nil error: & err или]; ' – Akhilrajtr
Я не верю, что это было так просто @ Ахилтрайт (на самом деле я это делаю!). Теперь он создает папки! но мне все же приходится решать проблему с именем файла, потому что я пытаюсь сохранить имя файла с полным путем (что-то вроде /Upload/Folder/etc/image.jpg), и я считаю, что мне нужно вырезать папки имя и просто имя изображения. Есть ли простой способ сделать это? Спасибо за помощь. – Tchelow
, так что вам просто нужно 'Documents/Upload/imageName.jpg' как путь? – Akhilrajtr