最近在開(kāi)發(fā)的項(xiàng)目圖片比較多所以非常非常耗損流量验烧,于是我百度了一下找到了一篇比較不錯(cuò)的文章get下來(lái)誊稚。
對(duì)于流量耗損的原因:服務(wù)器端沒(méi)有縮略圖,所以不管看列表還是點(diǎn)詳情都是大圖杂彭,這個(gè)問(wèn)題服務(wù)器端要做處理县耽。客戶端每次瀏覽圖片都要從服務(wù)器端下載一次包帚,導(dǎo)致流量跑得飛快渔期。
解決的辦法:服務(wù)器端保證圖片不會(huì)重名,客戶端根據(jù)服務(wù)器端返回的文件名判斷本地是否存在該文件渴邦,如果有直接打開(kāi)本地圖片疯趟,如果沒(méi)有就下載到本地再打開(kāi)。以下是代碼
// 下載文件到Documents中并返回路徑
+ (NSString *)saveFileToDocuments:(NSString *)url
{
NSString *resultFilePath = @"";
if (url.length > 7) {// 本應(yīng)用服務(wù)器端的域名是7位谋梭,所以先判斷url是否正確
NSString *destFilePath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:[url substringFromIndex:7]]; // 去除域名信峻,組合成本地文件PATH
NSString *destFolderPath = [destFilePath stringByDeletingLastPathComponent];
// 判斷路徑文件夾是否存在不存在則創(chuàng)建
if (! [[NSFileManager defaultManager] fileExistsAtPath:destFolderPath]) {
[[NSFileManager defaultManager] createDirectoryAtPath:destFolderPath withIntermediateDirectories:YES attributes:nil error:nil];
}
// 判斷該文件是否已經(jīng)下載過(guò)
if ([[NSFileManager defaultManager] fileExistsAtPath:destFilePath]) {
resultFilePath = destFilePath;
} else {
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
if ([imageData writeToFile:destFilePath atomically:YES]) {
resultFilePath = destFilePath;
}
}
}
return resultFilePath;
}