最近app有个需求下载pdf缓存到本地,但是由于一些原因后台只能给我返回这个pdf内容对应的base64加密后的string串,
客户端将string串解码之后写入pdf文件中,下载根据路径判断有没有下载过这个文件:
主要用到以下方法:
获取完整路径:
+ (NSString *)getFullPathWithId:(NSString *)archiveId
{
//拼接文件全路径,放在Library/Caches目录下
NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSString *pdfName = [NSString stringWithFormat:@"%@.pdf",[archiveId md5String]];
NSString *fullpath = [caches stringByAppendingPathComponent:pdfName];//response.suggestedFilename
return fullpath;
}
根据路径以及string传保存pdf
+ (void)savePDFString:(NSString *)base64String toPath:(NSString *)fullPath
{
//这边path是包括.pdf在内的完成路径
if (fullPath.length == 0) {
return ;
}
NSData *data = [MF_Base64Codec dataFromBase64String:base64String];
[data writeToFile:fullPath atomically:YES];//不需要创建pdf文件,调用此句直接写入该目录下pdf
//YES是保证文件的写入原子性,就是说会先创建一个临时文件,直到文件内容写入成功再导入到目标文件里.NO是直接写入
}
如果pdf是string串:
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];