【问题标题】:How do I save file to temp directory from file browser如何从文件浏览器将文件保存到临时目录
【发布时间】:2014-09-24 13:31:25
【问题描述】:

我正在使用这种方法打开文件浏览器并仅搜索图像文件。

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];

单击“上传”按钮时,对话框关闭。如何以特定名称将打开的图像保存到临时目录? 谢谢

【问题讨论】:

    标签: objective-c xcode cocoa nsurl temporary-files


    【解决方案1】:

    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.
       } 
    }];
    

    这很简单,如果您在网上搜索过“如何使用 Cocoa 复制文件”,那么您会找到很多答案。访问NSOpenPanel返回的文件也一样。

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2015-09-18
      • 1970-01-01
      相关资源
      最近更新 更多