2014-09-24 81 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處的文件複製到目標。這裏是(未測試)的代碼示例:

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返回的文件也是如此。