2016-07-21 16 views
0

나는 iPod 서버에 음악을 업로드하려고합니다. 그래서 AVAssetExportSession를 사용하여, 나는 문서 폴더nsoutputstream이 상태 1 (NSStreamStatusOpening = 1)에 멈춤 - iOS - objective c


exportSession.outputURL = [NSURL fileURLWithPath:musicFilePath]; 
[exportSession exportAsynchronouslyWithCompletionHandler:^{ 
    if(exportSession.status == AVAssetExportSessionStatusCompleted) { 
     NSLog(@"export completed."); 
     self.exportedMusicPath = musicFilePath; 
     [self.delegate exportMusicFinish:self.exportedMusicPath]; 

    } 
    else { 
     NSLog(@"export failed."); 
     [self.delegate exportMusicFinish:@"export failed"]; 
    } 
}]; 

에서 파일을 만들어 내 FTP 업로드에 대한 nsoutputstream을 열고 위임을 통해 내 보낸 파일의 경로를 가져


-(void) exportMusicFinish:(NSString *)exportedMusicPath { 
    if(!self.fileUpload) { 
     self.fileUpload = [[FTPUpload alloc] init]; 
     self.fileUpload.delegate = self; 
    } 
    self.exporter = nil; 
    [self.fileUpload uploadFileToFTP:exportedMusicPath]; 
} 

self.fileStream = [NSInputStream inputStreamWithFileAtPath:filePath]; 
assert(self.fileStream != nil); 

[self.fileStream open]; 

// Open a CFFTPStream for the URL.   
self.networkStream = CFBridgingRelease(CFWriteStreamCreateWithFTPURL(NULL, (__bridge CFURLRef) url)); 
[self.networkStream setProperty:(id)kCFBooleanFalse forKey:(NSString *)kCFStreamPropertyFTPAttemptPersistentConnection]; 
assert(self.networkStream != nil); 

success = [self.networkStream setProperty:@"userid" forKey:(id)kCFStreamPropertyFTPUserName]; 
assert(success); 
success = [self.networkStream setProperty:@"userpw" forKey:(id)kCFStreamPropertyFTPPassword]; 
assert(success); 
//- (BOOL)setProperty:(id)property forKey:(NSString *)key ,object casting needed 

self.networkStream.delegate = self; 
[self.networkStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
[self.networkStream open]; 

하지만 내 네트워크 스트림 (nsoutputqtream)이 열리기 상태입니다.

내 URL 경로가 업로드 클래스 작업이를 제외하고 내 문서 폴더의 모든 파일에 제대로 정확하고는 가

이 사람이 나를 도울 수 파일

수출? 나는 iOS 프로그래밍에 능숙하지 않다 ...

답변

0

많은 이유로 재단의 FTP 지원은 권장되지 않는다. 하나를 위해, 내가 올바르게 기억하고 있다면, 그것은 아주 잘 작동하지 않습니다. 다른 하나는 FTP가 데이터를 업로드하는 끔찍한 방법입니다. 그것은 업로드를 다시 시작하는 것에 대한 지원이 부족하고, 무엇이든 보안 (일반 텍스트 암호)이 부족하며, NAT 기반 방화벽이면 절대 연결할 수없는 위험이 있습니다. 기본적으로 FTP는 재앙이고, 절반은 새로운 앱에서 사용하는 것을 고려하지 않아야합니다.

웹 서버를 설치하고 WebDAV를 설치하며 PUT 요청을 사용하십시오. 그러면 인증, TLS (암호화) 및 기본 NSURLSession 지원이 제공됩니다. 이 문제를 해결하는 방법은 훨씬 더 좋습니다.