2014-09-24 3 views
0

이 방법을 사용하여 파일 브라우저를 열고 이미지 파일 만 검색합니다.파일 브라우저에서 파일을 임시 디렉토리에 저장하는 방법

NSOpenPanel* openPanel = [NSOpenPanel openPanel]; 
NSArray* imageTypes = [NSImage imageTypes]; 
[openPanel setCanChooseFiles:YES]; 
[openPanel setCanChooseDirectories:NO]; 
[openPanel setAllowsMultipleSelection:NO]; 
[openPanel setResolvesAliases:YES]; 
[openPanel setAllowedFileTypes:imageTypes]; 
[openPanel setPrompt:@"Upload"]; 
[openPanel setDirectoryURL:[NSURL fileURLWithPath:NSHomeDirectory()]]; 
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) { 
    [openPanel close]; 

'업로드'버튼을 클릭하면 대화 상자가 닫힙니다. 열린 이미지를 임시 디렉토리에 특정 이름으로 저장하려면 어떻게해야합니까? 감사합니다.

답변

0

NSOpenPanel 클래스는 어떤 종류의 파일 처리도 수행하지 않습니다. 사용자가 선택한 파일을 가져 오려면 URLs 메서드를 사용하고 NSTemporaryDirectory()을 사용하여 해당 URL에있는 파일을 대상에 복사 할 수 있습니다. 여기 (UN-테스트) 코드의 예 :

NSOpenPanel* openPanel = [NSOpenPanel openPanel]; 
NSArray* imageTypes = [NSImage imageTypes]; 
[openPanel setCanChooseFiles:YES]; 
[openPanel setCanChooseDirectories:NO]; 
[openPanel setAllowsMultipleSelection:NO]; 
[openPanel setResolvesAliases:YES]; 
[openPanel setAllowedFileTypes:imageTypes]; 
[openPanel setPrompt:@"Upload"]; 
[openPanel setDirectoryURL:[NSURL fileURLWithPath:NSHomeDirectory()]]; 
[openPanel beginSheetModalForWindow:self.window completionHandler:^(NSInteger result) { 
    if (result != NSOKButton) { 
     return; 
    } 

    NSString *myString = [[[openPanel URLs] objectAtIndex:0] absoluteString]; 
    NSError *error = nil; 
    [[NSFileManager defaultManager] copyItemAtPath:myString toPath:NSTemporaryDirectory() error:&error]; 
    if(error) { 
     // Error! Tell the user by showing an NSAlert, etc. 
    } 
}]; 

이 매우 간단하고 당신이 인터넷에서 검색 한 경우 다음 답변의 과다를 발견했을 것이다 "어떻게 코코아를 사용하여 파일을 복사하는 방법"을 참조하십시오. NSOpenPanel에 의해 반환 된 파일에 액세스하는 방법과 동일합니다.

관련 문제