一、问题描述:1.下载失败报错:

文件写入失败Error Domain=NSCocoaErrorDomain Code=512 "未能将文件“jquery_1_10_2_min.js”存储到文件夹“Q20180104153006399”中。"

原因及解决方法:文件夹下均为文件,不包含子文件夹,GoldRaccoon第三方不会创建存储的本地文件夹,所以需要自己提前手动创建好下载的本地文件夹

NSFileManager *fileManager = [NSFileManager defaultManager];NSString *zhenggedizhi1 = [documentsDirectoryPath stringByAppendingString:[NSString stringWithFormat:@"/%@/Q20180104153006399",@"OralQuesBank"]];[fileManager createDirectoryAtPath:zhenggedizhi1 withIntermediateDirectories:YES attributes:nil error:nil];

二、补充:GoldRaccoon基本使用方法

第三方GoldRaccoon使用方法主要参考网址:https://blog.csdn.net/wobushizhaoqian/article/details/72845898?locationNum=10&fps=1

代码:

/** 下载FTP资源 */
#import "GRRequestsManager.h"
#import "GRListingRequest.h"
#import "FCFileManager.h"
<GRRequestsManagerDelegate>
@property (nonatomic, strong) GRRequestsManager *requestsManager;

- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.self.view.backgroundColor = [UIColor orangeColor];
UIButton *downBtn = [UIButton buttonWithType:UIButtonTypeCustom];[downBtn setTitle:@"下载" forState:UIControlStateNormal];downBtn.backgroundColor = [UIColor cyanColor];[downBtn addTarget:self action:@selector(startDownClick) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:downBtn];[downBtn mas_makeConstraints:^(MASConstraintMaker *make) {make.center.equalTo(self.view);make.size.mas_equalTo(CGSizeMake(50, 40));}];
}- (void)startDownClick{//列表localuser下的文件夹目录,这里做的只是列表目录下面有什么[self.requestsManager addRequestForListDirectoryAtPath:@"OralQuesBank/Q20180104153006399"];
    [self.requestsManager startProcessingRequests];
}
#pragma mark *** GRRequestsManagerDelegate ***
//代理方法,每次执行列表方法都会走这个方法
- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteListingRequest:(id<GRRequestProtocol>)request listing:(NSArray *)listing{//沙盒目录NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];GRListingRequest *req = (GRListingRequest *)request;//远程文件夹列表NSLog(@"%@",listing);//打印创建的目录NSLog(@"%@",documentsDirectoryPath);NSFileManager *fileManager = [NSFileManager defaultManager];NSString *zhenggedizhi1 = [documentsDirectoryPath stringByAppendingString:[NSString stringWithFormat:@"/%@/Q20180104153006399",@"OralQuesBank"]];[fileManager createDirectoryAtPath:zhenggedizhi1 withIntermediateDirectories:YES attributes:nil error:nil];//文件夹列表枚举[listing enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {    if ([[obj pathExtension] isEqualToString:@""]) {//整个地址,在沙盒中创建和远程文件一样的文件夹目录NSString *zhenggedizhi = [documentsDirectoryPath stringByAppendingString:[NSString stringWithFormat:@"%@/%@",req.path,obj]];//如果沙盒中的这个文件夹不存在就创建if (![fileManager fileExistsAtPath:zhenggedizhi]) {[fileManager createDirectoryAtPath:zhenggedizhi withIntermediateDirectories:YES attributes:nil error:nil];}//然后接着递归列举文件夹下的子文件夹下的目录[self.requestsManager addRequestForListDirectoryAtPath:[NSString stringWithFormat:@"%@%@",req.path,obj]];[self.requestsManager startProcessingRequests];}else{//如果目录下的不是文件夹,则下载这个文件到沙盒的指定目录下NSString *zhenggedizhi = [documentsDirectoryPath stringByAppendingString:[NSString stringWithFormat:@"%@/%@",req.path,obj]];//如果沙盒中的这个文件夹不存在就创建if (![fileManager fileExistsAtPath:zhenggedizhi]) {[fileManager createDirectoryAtPath:zhenggedizhi withIntermediateDirectories:YES attributes:nil error:nil];}[self.requestsManager addRequestForDownloadFileAtRemotePath:[NSString stringWithFormat:@"%@/%@",req.path,obj] toLocalPath:[documentsDirectoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@%@",req.path,obj]]];[self.requestsManager startProcessingRequests];}}];}
- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didFailRequest:(id<GRRequestProtocol>)request withError:(NSError *)error
{NSLog(@"请求失败requestsManager:didFailRequest:withError: \n %@", error);//    NSString *errorStr = [NSString stringWithFormat:@"%@",error];
//    [self downLoadFail];//可添加处理下载失败后自己的删除文件夹路径方法
}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didFailWritingFileAtPath:(NSString *)path forRequest:(id<GRDataExchangeRequestProtocol>)request error:(NSError *)error{LSLog(@"文件写入失败%@",error);
}- (void)requestsManagerDidCompleteQueue:(id<GRRequestsManagerProtocol>)requestsManager{LSLog(@"整个文件夹下载完成+++++++++++++++++");
}#pragma mark - layzy
- (GRRequestsManager *)requestsManager{if (!_requestsManager) {_requestsManager = [[GRRequestsManager alloc] initWithHostname:@"ftp://11.11.111.11:12" user:@"Administrator" password:@"这是ftp密码"];// 设置代理_requestsManager.delegate = self;}return _requestsManager;
}

转载于:https://www.cnblogs.com/wusang/p/9110689.html

iOS GoldRaccoon第三方FTP文件夹下载失败原因相关推荐

  1. 搭建FTP服务器出现的“FTP文件夹错误”解决方法

    [说明] 网上FTP的搭建能找到很多教程,这里不再阐述.主要说下在FTP服务器搭建完成后,访问该FTP服务器时提示"FTP文件夹错误"的原因和解决方法. [系统环境] window ...

  2. Python 连接FTP服务器并实现文件夹下载实例演示,python区分ftp目录下文件和文件夹方法,ftp目录下包含中文名问题处理

    Python 连接 FTP 服务器并实现文件夹下载实例演示 第一章:连接 FTP 服务器并实现文件夹下载 ① 连接 FTP 服务器 ② 进入指定目录并显示文件信息 ③ 区分文件和文件夹名 ④ 文件夹名 ...

  3. ftp文件夹错误 参数错误_收藏夹和404错误

    ftp文件夹错误 参数错误 As you probably already know, adding a favorite icon to your website is a great way to ...

  4. QFtp实现文件夹下载

    QFtp实现文件夹下载类,希望能帮到有需要的人 完整文件资源链接 https://download.csdn.net/download/ufe_1/12838957 以下是cpp源码: ftpDown ...

  5. ftp上传显示服务器错误,FTP文件夹错误:打开FTP服务器上的文件夹时发生错误

    问题描述:通过我的电脑或资源管理器连接FTP服务器时提示"FTP文件夹错误:打开FTP服务器上的文件夹时发生错误.请检查是否有权限访问该文件夹.详细信息:The operation time ...

  6. 拷贝文件到服务器 提示FTP文件夹错误

    FTP文件夹错误 将文件复制到FTP服务器时发生错误.请检查是否有权限将文件放到该服务器上. 详细信息: 200 Type set to I. 227Entering Passive Mode (12 ...

  7. 【无标题】FTP文件夹错误:打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。

    问题描述:通过我的电脑或资源管理器连接FTP服务器时提示"FTP文件夹错误:打开FTP服务器上的文件夹时发生错误.请检查是否有权限访问该文件夹.详细信息:The operation time ...

  8. win7系统ftp无法访问服务器,技术员详解电脑打开FTp文件夹出错提示windows无法访问的教程?...

    技术员详解电脑打开FTp文件夹出错提示windows无法访问的教程? ? 近来有网友反映在电脑中打开FTp文件夹时出错,提示windows无法访问此文件夹.对于上述的FTp文件夹打开错误的问题,咱们应 ...

  9. 为什么从此电脑访问不了ftp_电脑打开FTP文件夹出错提示Windows无法访问的解决方法...

    ‍ 近来有用户反映在电脑中打开FTP文件夹时出错,提示Windows无法访问此文件夹.对于上述的FTP文件夹打开错误的问题,我们应该如何解决呢?首先我们需要确认打开的FTP是正确的,并有权进行访问,可 ...

最新文章

  1. API 面试四连杀:接口如何设计?安全如何保证?签名如何实现?防重如何实现?...
  2. 单片机教学视频讲得好
  3. 自动化配置和部署工具--puppet(1)--什么是puppet
  4. Java基础知识强化之IO流笔记42:IO流总结(图解)
  5. 强化学习(一)---绪论
  6. Java提高—对象克隆(复制)/对象属性拷贝
  7. MySQL的4大版本
  8. 【theano-windows】学习笔记六——theano中的循环函数scan
  9. 广度优先搜索——岛屿数量(Leetcode 200)
  10. 张朝阳:社交是互联网的中原 做「狐友」是要逐鹿中原
  11. Android 开发环境配置问题
  12. 比赛之前的数据清零操作
  13. 说说大型高并发高负载网站的系统架构
  14. oracle软件 乱码,oracle 中文乱码解决办法
  15. 制度罚则-- 日志规范
  16. 单片机复位电路的可靠性设计及精典实用复位电路
  17. 使用dockpanel动态添加picturebox并绑定图片
  18. mysql table plugin,MySql报错Table mysql.plugin doesn’t exist的解决方法
  19. Apache服务器报错信息,端口号等原因
  20. VTK画椭球 C++

热门文章

  1. atftp 在SUSE Linux中的源代码安装配置方法
  2. 护理方面关于人工智能的构想_如何提出惊人的AI,ML或数据科学项目构想。
  3. 使用Java解决您的数据科学问题
  4. 【Android 修炼手册】常用技术篇 -- Android 热修复解析
  5. 哪些职业申请贷款比较难?
  6. instance 怎么获得自己的 Metadata - 每天5分钟玩转 OpenStack(169)
  7. 你好,弗朗索瓦丝·萨冈
  8. 线性序列机与串口接口DAC驱动设计与验证
  9. Misc string test
  10. 软件工程软件开发成本度量规范_软件开发成本度量方法