Запрос Ajax в загрузке на основе браузера YouTube API

#ajax #youtube-api

#ajax #youtube-api

Вопрос:

Я хотел бы загрузить видео YouTube, используя ajax-запросы. Следующий скрипт используется для создания формы для загрузки видео на YouTube:

     function createUploadForm($videoTitle, $videoDescription, $videoCategory, $videoTags,     $nextUrl = null)
{
    $httpClient = getAuthSubHttpClient();
    $youTubeService = new Zend_Gdata_YouTube($httpClient);
    $newVideoEntry = new Zend_Gdata_YouTube_VideoEntry();

    $newVideoEntry->setVideoTitle($videoTitle);
    $newVideoEntry->setVideoDescription($videoDescription);

    //make sure first character in category is capitalized
    $videoCategory = strtoupper(substr($videoCategory, 0, 1))
        . substr($videoCategory, 1);
    $newVideoEntry->setVideoCategory($videoCategory);

    // convert videoTags from whitespace separated into comma separated
    $videoTagsArray = explode(' ', trim($videoTags));
    $newVideoEntry->setVideoTags(implode(', ', $videoTagsArray));

    $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
    try {
        $tokenArray = $youTubeService->getFormUploadToken($newVideoEntry, $tokenHandlerUrl);
        if (loggingEnabled()) {
            logMessage($httpClient->getLastRequest(), 'request');
            logMessage($httpClient->getLastResponse()->getBody(), 'response');
        }
    } catch (Zend_Gdata_App_HttpException $httpException) {
        print 'ERROR ' . $httpException->getMessage()
            . ' HTTP details<br /><textarea cols="100" rows="20">'
            . $httpException->getRawResponseBody()
            . '</textarea><br />'
            . '<a href="session_details.php">'
            . 'click here to view details of last request</a><br />';
        return;
    } catch (Zend_Gdata_App_Exception $e) {
        print 'ERROR - Could not retrieve token for syndicated upload. '
            . $e->getMessage()
            . '<br /><a href="session_details.php">'
            . 'click here to view details of last request</a><br />';
        return;
    }

    $tokenValue = $tokenArray['token'];
    $postUrl = $tokenArray['url'];

    // place to redirect user after upload
    if (!$nextUrl) {
        $nextUrl = $_SESSION['homeUrl'];
    }

    print <<< END
        <br /><form id="ajaxform" action="${postUrl}?nexturl=${nextUrl}"
        method="post" enctype="multipart/form-data">
        <input name="file" type="file"/>
        <input name="token" type="hidden" value="${tokenValue}"/>
        <input value="Upload Video File" type="submit" />
        </form>
END;
}
  

В конце создается форма с использованием action="${postUrl}?nexturl=${nextUrl} , которая сообщает YouTube перенаправить браузер после завершения загрузки. Когда пользователь перенаправляется на nextUrl , вместе с URL передаются две переменные (статус загруженного видео и идентификатор для этого видео). Я не хочу перезагружать страницу, но, похоже, это nextUrl обязательно. Кроме того, я хочу иметь возможность получить этот идентификатор для дальнейшего использования.

Возможно ли изменить поведение этого автоматического перенаправления и передать эти значения каким-либо другим способом?

Спасибо

Комментарии:

1. Я ищу аналогичное решение для чего-то подобного.