使用LxFTPRequest,進行ftp請求,獲取某個路徑下的文件目錄。
- (void)lFtpFolderSource:(LFileModel *)file{
LxFTPRequest * request = [LxFTPRequestresourceListRequest];
file.ipStr = [selfrequireIPstr:file.ipStr];
NSString *FTP_ADDRESS1 = [NSStringstringWithFormat:@"ftp://%@:%d",file.ipStr,LFtpPort];
NSString *filePath = [NSStringstringWithFormat:@"%@",[file.fileServerPathsubstringFromIndex:index]];
request.serverURL = [[NSURLURLWithString:FTP_ADDRESS1]URLByAppendingPathComponent:filePath];
request.username = file.ftpUserName;
request.password = file.ftpPassword;
NSLog(@"resource URL: %@\n%@\n%@",request.serverURL,request.username,request.password);
request.progressAction = ^(NSInteger totalSize,NSInteger finishedSize,CGFloat finishedPercent) {
NSLog(@"totalSize = %ld, finishedSize = %ld, finishedPercent = %f", totalSize, finishedSize, finishedPercent); //
totalSize = MAX(totalSize, finishedSize);
};
request.successAction = ^(Class resultClass,id result) {
NSArray * resultArray = (NSArray *)result;
[self.resourceListDelegatefileResourceListFeedBackArray:resultArraywithStatus:1];
};
request.failAction = ^(CFStreamErrorDomain domain,NSInteger error,NSString * errorMessage) {
NSLog(@"domain = %ld, error = %ld, errorMessage = %@", domain, error, errorMessage); //
NSArray *arr = [NSArrayarrayWithObjects:errorMessage,nil];
[self.resourceListDelegatefileResourceListFeedBackArray:arrwithStatus:-1];
};
[request start];
}
請求成功,拿到的result爲一個數組,數組中的每個元素都爲一個單元:
{
kCFFTPResourceGroup = 0;
kCFFTPResourceLink = "";
kCFFTPResourceModDate = "2017-02-16 00:48:00 +0000";
kCFFTPResourceMode = 438;
kCFFTPResourceName = "GIM\U2030\U03a9\U00f8\U00c1\U00ee\U00ae\U00cb\U00d8\U00a5\U00ca\U00f2\U00e9\U2030\U03c0\U00b6.docx";
kCFFTPResourceOwner = 0;
kCFFTPResourceSize = 1369;
kCFFTPResourceType = 8;
}
字典中kCFFTPResourceName爲文件/文件夾 名字,按照正常的文字解碼方式,解出來的是亂碼
GIM‰ΩøÁî®ËØ¥Êòé‰π¶,實際爲:GIM使用說明書.docx。
問題出在,nsstream代理,讀取數據的時候,需要將kCFFTPResourceName進行轉碼:
NSString *nameEntry;
if ((nameEntry = entry[(id)kCFFTPResourceName])) {
entry[(id)kCFFTPResourceName] = [[NSStringalloc]initWithData:[nameEntrydataUsingEncoding:NSMacOSRomanStringEncodingallowLossyConversion:YES]encoding:NSUTF8StringEncoding];}
所以需要去到LxFTPRequest.m文件中,將390行左右位置的代碼照着上面的代碼,修改一下就OK了。