您的位置:首页 > 产品设计 > UI/UE

LxFTPRequest,获取文件目录时,list,文件名解码出来打印乱码。

2017-02-20 10:08 183 查看
使用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了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐