iOS GoldRaccoon第三方FTP文件夹下载失败原因

一、问题描述: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/251669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目UML设计(团队)

团队信息 队名&#xff1a;massivehard 组长&#xff1a;晓辉 队员&#xff1a;一飞&#xff0c;帅珍&#xff0c;斌豪&#xff0c;锦谋 团队分工 模块序号模块名模块具体内容1日记编辑添加随笔2照片选择选择照片识别3消息模块收发消息4个人信息账号&#xff0c;密码等负责人分…

安装asp.net mvc4后mvc3项目编译报错

为什么80%的码农都做不了架构师&#xff1f;>>> 安装asp.net mvc4之后&#xff0c;之前的mvc3项目编译时报这个错“The type System.Web.Mvc.ModelClientValidationRule exists in both c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\System.Web.M…

SqlServer SqlBulkCopy批量插入 -- 多张表同时插入(事务)

这段时间在解决一个多个表需要同时插入大量数据的问题&#xff0c;于是在网上找了下&#xff0c;查到说用SqlBulkCopy效率很高&#xff0c;实验后确实很快&#xff0c;10万条数据只要4秒钟&#xff0c;用ef要用40秒。但是我的还需两张表同时插入&#xff0c;且需要用到事务&…

一介书生,仅此而已

喜欢写文章&#xff0c;所以很少发随笔。 嘛~其实是一开始就搞错随笔和文章的场景了&#xff0c;迁移太麻烦&#xff0c;有时间自己做个个人博客好了~~转载于:https://www.cnblogs.com/restartyang/p/7710907.html

POJ 3608 Bridge Across Islands 《挑战程序设计竞赛》

为什么80%的码农都做不了架构师&#xff1f;>>> POJ 3608 Bridge Across Islands跨岛大桥&#xff1a;在两个凸包小岛之间造桥&#xff0c;求最小距离&#xff1f;3.6与平面和空间打交道的计算几何 凸包 这题原始数据已经是凸包&#xff08;convex polygons&#x…

抓包(Charles工具入门)

一、charles工具简单使用 1、录制操作 录制请求、清空录制请求&#xff1a; 两种展示请求的视图方式&#xff1a; 2、录制请求的简单分析 &#xff08;1&#xff09;请求的总览页面Overview&#xff1a;可查看请求路径、请求方式、请求时间等有关该请求的内容 &#xff08;2&am…

探秘创造力

为什么80%的码农都做不了架构师&#xff1f;>>> 创造力&#xff0c;在很多行业和领域都被视为神奇的存在&#xff0c;大家都希望自己的创造力能够无限&#xff0c;感觉创造力已经被神话了。其实&#xff0c;一个简单问题可能很少人能够明确&#xff1a;”创造力是天…

2017.10.23解题报告

预计分数&#xff1a;100600160 实际分数&#xff1a;100800180 T1 题目描述 现在有一个字符串&#xff0c;每个字母出现的次数均为偶数。接下来我们把第一次出现的字母a和第二次出现的a连一条线&#xff0c;第三次出现的和四次出现的字母a连一条线&#xff0c;第五次出现的和六…

Chrome Android 60.X+ 不能自动播放audio音频的解决办法

Chrome Android等一些浏览器默认限制了自动播放音频视频等&#xff0c;需要用户有点击的动作后才可以播放。这样的原因在于很多用户流量需要付费&#xff0c;而限制了自动播放可以避免用户在不知情的情况下产生高额的流量费用。 在60.X版本之前&#xff0c;chrome://flags中有一…

(水一下)Linux启动步骤(面试题)

1.加载并初始化Linux内核2.配置硬件设备3.内核创建自发进程4.由用户决定是否进入手工引导模式5.init进程执行系统启动脚本6.进入多用户模式转载于:https://blog.51cto.com/12942223/2408649

【WebGL】《WebGL编程指南》读书笔记——第5章

一、前言 终于到了第五章了&#xff0c;貌似开始越来越复杂了。 二、正文 Example1&#xff1a;使用一个缓冲区去赋值多个顶点数据&#xff08;包含坐标及点大小&#xff09; function initVertexBuffers(gl) {var verticesSizes new Float32Array([0.0, 0.5, 10.0, -0.5, …

ngnix反向代理

https://blog.csdn.net/sherry_chan/article/details/79055211转载于:https://www.cnblogs.com/lwj820876312/p/9115308.html

框架设计:实现数据的按需更新与插入的改进--用数据对比进一步说明

2019独角兽企业重金招聘Python工程师标准>>> 在发布完&#xff1a;框架设计&#xff1a;实现数据的按需更新与插入的改进 之后&#xff1a; 有网友表示不理解&#xff0c;于是这里给出一篇简单的说明对比&#xff0c;表示下改进后好处。 一&#xff1a;场景一&#…

Java异常详解及如何处理

来源&#xff1a;Java异常详解及如何处理 简介 程序运行时&#xff0c;发生的不被期望的事件&#xff0c;它阻止了程序按照程序员的预期正常执行&#xff0c;这就是异常。异常发生时&#xff0c;是任程序自生自灭&#xff0c;立刻退出终止&#xff0c;还是输出错误给用户&…

端口以及服务常用cmd

netstat -ano 列出所有端口的情况 netstat -aon|findstr "49157" 查出特定端口的情况 tasklist|findstr "2720" 查看是哪个进程或者程序占用了PID端口的程序 打开任务管理器&#xff0c;切换到进程选项卡&#xff…

python学习笔记(二十八)日志模块

我们在写程序的时候经常会打一些日志来帮助我们查找问题&#xff0c;这次学习一下logging模块&#xff0c;在python里面如何操作日志。介绍一下logging模块&#xff0c;logging模块就是python里面用来操作日志的模块&#xff0c;logging模块中主要有4个类&#xff0c;分别负责不…

TransactionScope 的基本原理简介

C# 的事务编程 1 Db事务 DbConnection 中创建基于当前连接的 DbTransaction 2 使用TransactionScope ,创建环境事务 一旦创建&#xff0c;在这个环境包含的DbConnection 实例 都会根据连接字符串中的 Sqlserver 连接字符串支持&#xff0c;是否自动附加当前环境事务. 连接字符…

Canvas 生成交互动画

2019独角兽企业重金招聘Python工程师标准>>> 今天介绍的是一个HTML5交互动画效果&#xff0c;难以置信。HTML5虽说还有很多东西在改进&#xff0c;但现在所能实现的 效果的程度我想是诸位很难想象得到的&#xff0c;实在是发展得太快了。 查看详情 转载于:https://m…

Spark记录-Scala数据类型

Scala与Java具有相同的数据类型&#xff0c;具有相同的内存占用和精度。以下是提供Scala中可用的所有数据类型的详细信息的表格&#xff1a; 序号数据类型说明1Byte8位有符号值&#xff0c;范围从-128至1272Short16位有符号值&#xff0c;范围从-32768至327673Int32位有符号值&…

二分搜索技术

2019独角兽企业重金招聘Python工程师标准>>> 分治法的基本思想&#xff1a;将一个规模为n的问题&#xff0c;分解为k个规模较小的子问题&#xff0c;这些子问题互相独立且与原问题相同。递归的解这些子问题&#xff0c;然后将各个子问题的解合并得到原问题的解。 经…