Как разрешить загрузку файлов с помощью WebView в Какао?

В WebView есть метод под названием

- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener

Но есть почти 0 документов и подробностей по нему. Внутри я показываю диалог открытия файла и получаю выбранное имя файла.

Вот так

- (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id < WebOpenPanelResultListener >)resultListener
{       
    NSOpenPanel* openDlg = [NSOpenPanel openPanel];

    [openDlg setCanChooseFiles:YES];

    [openDlg setCanChooseDirectories:NO];

    // process the files.
    if ( [openDlg runModal] == NSOKButton )
    {
        NSString* fileString = [[openDlg URL]absoluteString];
        [resultListener chooseFilename:fileString]; 
    }

}

Но тогда?

Что мне делать? На веб-сайте отображается, что я выбрал файл, но когда вы нажимаете кнопку «Загрузить», веб-сайт просто возвращает ошибку, например, если файл не загружен. Должен ли я написать код, обрабатывающий загрузку файла или что?

Я немного заблудился ...

Редактировать:

На самом деле у меня все заработало .... Просто изменив код отсюда: Какао webkit: как получить файл / файл доступ к системе в webkit немного, так как некоторые части устарели

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

}

Наслаждайтесь!

7
задан Community 23 May 2017 в 12:32
поделиться