url 中包含中文AFN 会下载失败

项目中涉及附件上传管理
当遇见附件下载时,本地做了缓存处理,节约流量
例如:
选取的文件名为:项目开发和对接状态_20191118.xlsx
以文件名为key ,缓存到本地

上传成功后
获取文件的服务器链接为
http://192.168.../upload/20191118/项目开发和对接状态_20191118.xlsx,

由于包含中文,所以使用AFN 会下载失败,所以需要将中文编码处理

处理后变成这个样子
http://192.168./upload/20191118/%E6%B2%B3%E5%A7%86%E6%B8%A1CRM_%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E5%92%8C%E5%AF%B9%E6%8E%A5%E7%8A%B6%E6%80%81_20191118.xlsx

AFN下载成功会缓存到本地路径 是以编码后的名字为路径存储的
targetPath= >file:///var/mobile/Containers/Data/Application/E009F2B9-A29A-4CDC-B1F0-C5921398C512/Library/Caches/%E6%B2%B3%E5%A7%86%E6%B8%A1CRM_%E9%A1%B9%E7%9B%AE%E5%BC%80%E5%8F%91%E5%92%8C%E5%AF%B9%E6%8E%A5%E7%8A%B6%E6%80%81_20191118.xlsx

当以中文的文件名为key ,拼接缓存路径后,打印路径为下
cachesPath => /var/mobile/Containers/Data/Application/E009F2B9-A29A-4CDC-B1F0-C5921398C512/Library/Caches/项目开发和对接状态_20191118.xlsx

用系统的文件存储方法来判断
查看本地是否存在该文件
结果居然存在
系统认为 targetPath == cachesPath

之前做缓存时还考虑以中文为key 还时以编码为key 缓存
看来是想多了
猜测应该是系统给优化了,各位有啥见解,评论区留言

你可能感兴趣的:(url 中包含中文AFN 会下载失败)