背景
最近遇到一个Bug,在用AFNetworking下载文件的时候莫名其妙的失败了,跟了一下发现一个小坑,记录一下防止以后再掉进去。
iOS和Linux的文件名的长度限制相同都是255个字符!!!
问题根源是文件名超度超过了255个字符,AFNetworking下载文件是成功了(框架会把文件下载到一个临时文件,例如:CFNetworkDownload_xxx.tmp
,这个文件名不会出现过长的问题),下载成功之后会copy到调用者指定路径,在这里指定的文件名超过了255个字符,导致创建文件失败,于是回调是成功了,但是在设置的路径找不到这个文件。
上代码!
下载代码:
1 | // 注意对文件名长度进行处理!!! |
出错的地方AFURLSessionManager.m
1 | - (void)URLSession:(NSURLSession *)session |
我们来看看AFURLSessionDownloadTaskDidFailToMoveFileNotification
的定义
AFURLSessionManager.h
1 | /** |