【发布时间】:2016-02-28 19:23:51
【问题描述】:
我正在尝试通过 FTP 将文件上传到服务器。根据 Apple Documentation NSURLSession 类支持 FTP 操作。
有一个著名的Apple Developer blog 也支持这一点。但是仍然不清楚 NSURLSession API 是否支持 ftp 上传? (我尝试了建议的方式并得到错误)。
使用CFFTPStreamRef 的传统方式,ftp 上传工作正常,但在 9.0 中已弃用。标头说:CF_DEPRECATED(10_3, 10_11, 2_0, 9_0, "Use NSURLSessionAPI for ftp requests")
获得帮助的任何想法、示例或链接。我现在正在尝试这样的事情:
NSURL *url_upload = [NSURL URLWithString:@"ftp://username:password@thelink/myfolder/filename.zip"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url_upload];
[request setHTTPMethod:@"PUT"];
NSURL *docsDirURL = [NSURL fileURLWithPath:filePath];
NSURLProtectionSpace * protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:url_upload.host port:[url_upload.port integerValue] protocol:url_upload.scheme realm:nil authenticationMethod:nil];
NSURLCredential *cred = [NSURLCredential
credentialWithUser:userId
password:password
persistence:NSURLCredentialPersistenceForSession];
NSURLCredentialStorage * cred_storage ;
[cred_storage setCredential:cred forProtectionSpace:protectionSpace];
NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
sessionConfig.URLCredentialStorage = cred_storage;
sessionConfig.timeoutIntervalForRequest = 30.0;
sessionConfig.timeoutIntervalForResource = 60.0;
sessionConfig.allowsCellularAccess = YES;
sessionConfig.HTTPMaximumConnectionsPerHost = 1;
NSURLSession *upLoadSession = [NSURLSession sessionWithConfiguration:sessionConfig delegate:self delegateQueue:nil];
NSURLSessionUploadTask *uploadTask = [upLoadSession uploadTaskWithRequest:request fromFile:docsDirURL];
[uploadTask resume];
【问题讨论】:
标签: ios ftp nsurlsession