Webkit Какао: как получить загрузку файла / доступ к файловой системе в webkit - PullRequest
0 голосов
/ 03 марта 2011

Я создал собственный браузер из фреймворка WebKit.Я почти все настроил.

Однако при посещении веб-страницы с загрузкой файлов (скажем, flickr) ничего не происходит, когда я нажимаю кнопку «Загрузить».Обычно это выдает всплывающее окно в safari / firefox /..

Что мне нужно для загрузки файла для работы с WebKit в Какао?NSFileHandler, NSFileManager?И как мне это сделать?

С уважением, Friesgaard

Ответы [ 2 ]

5 голосов
/ 07 марта 2011

Хорошо, я понял, что я для себя.

Реализуйте следующий метод в классе. Установите класс как UIDelegate для WebView в Интерфейсном Разработчике.

(Как использовать NSOpenPanel Я нашел здесь: http://ekle.us/index.php/2006/12/displaying_a_file_open_dialog_in_cocoa_w ) * +1010 *

- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener
{       
    // Create the File Open Dialog class.
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    // Enable the selection of files in the dialog.
    [openDlg setCanChooseFiles:YES];

    // Enable the selection of directories in the dialog.
    [openDlg setCanChooseDirectories:NO];

    // Display the dialog.  If the OK button was pressed,
    // process the files.
    if ( [openDlg runModalForDirectory:nil file:nil] == NSOKButton )
    {
        // Get an array containing the full filenames of all
        // files and directories selected.
        NSArray* files = [openDlg filenames];

        // Loop through all the files and process them.
        //for(int i = 0; i < [files count]; i++ )
        {
            NSString* fileName = [files objectAtIndex:0]; //i]; 
            // Do something with the filename.
            [resultListener chooseFilename:fileName]; 
        }
    }

}

пс. используйте [resultListener chooseFilenames:...] для нескольких файлов

3 голосов
/ 02 октября 2011

Я заработал, изменив это немного, поскольку часть формы устарела:

- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener
{       
    // Create the File Open Dialog class.
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    // Enable the selection of files in the dialog.
    [openDlg setCanChooseFiles:YES];

    // Enable the selection of directories in the dialog.
    [openDlg setCanChooseDirectories:NO];

    if ( [openDlg runModal] == NSOKButton )
    {
        NSArray* URLs = [openDlg URLs];
        NSMutableArray *files = [[NSMutableArray alloc]init];
        for (int i = 0; i <[URLs count]; i++) {
            NSString *filename = [[URLs objectAtIndex:i]relativePath];
            [files addObject:filename];
        }

        for(int i = 0; i < [files count]; i++ )
        {
            NSString* fileName = [files objectAtIndex:i];
            [resultListener chooseFilename:fileName]; 
        }
        [files release];
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...