Кнопка «Сохранить на Диске» позволяет пользователям сохранять файлы на Диске с вашего сайта. Например, предположим, что на вашем веб-сайте есть несколько руководств по эксплуатации (PDF), которые пользователи могут загрузить. Рядом с каждым руководством можно разместить кнопку «Сохранить на диске», что позволит пользователям сохранять руководства на свой «Мой диск».
Когда пользователь нажимает кнопку, файл загружается из источника данных и загружается на Google Диск по мере получения данных. Поскольку загрузка осуществляется в контексте браузера пользователя, этот процесс позволяет пользователю аутентифицировать действие по сохранению файлов, используя установленный сеанс браузера.
Поддерживаемые браузеры
Кнопка «Сохранить на диск» поддерживает эти браузеры.
Добавьте кнопку «Сохранить на диск» на страницу
Чтобы создать экземпляр кнопки «Сохранить на диск», добавьте на свою веб-страницу следующий скрипт:
<script src="https://apis.google.com/js/platform.js" async defer></script>
<div class="g-savetodrive"
data-src="//example.com/path/to/myfile.pdf"
data-filename="My Statement.pdf"
data-sitename="My Company Name">
</div>
Где:
class
— это обязательный параметр, для которого необходимо установить значениеg-savetodrive
если вы используете стандартный тег HTML.data-src
— обязательный параметр, содержащий URL-адрес сохраняемого файла.- URL-адреса могут быть абсолютными или относительными.
- URL
data-src
может обслуживаться из того же домена, поддомена и протокола, что и домен, на котором размещена кнопка. Вы должны использовать соответствующие протоколы между страницей и источником данных. - URI данных и URL-адреса
file://
не поддерживаются. - Из-за той же политики происхождения браузера этот URL-адрес должен обслуживаться из того же домена, что и страница, на которой он размещен, или быть доступен с использованием совместного использования ресурсов между источниками (CORS). Если кнопка и ресурс находятся в разных доменах, см. раздел Обработка кнопок и ресурсов в разных доменах (#domain).
- Чтобы обслуживать файл, когда одна и та же страница обслуживается как по http, так и по https, укажите ресурс без протокола, например
data-src="//example.com/files/file.pdf"
, который использует соответствующий протокол в зависимости от того, как был открыт доступ к странице хостинга.
data-filename
— обязательный параметр, содержащий имя, используемое для файла сохранения.data-sitename
— обязательный параметр, содержащий имя веб-сайта, предоставляющего файл.
Вы можете разместить эти атрибуты в любом элементе HTML. Однако наиболее часто используемые элементы — это div
, span
или button
. Каждый из этих элементов отображается немного по-разному во время загрузки страницы, поскольку браузер отображает элемент до того, как JavaScript «Сохранить на диск» повторно отображает элемент.
Этот скрипт должен загружаться по протоколу HTTPS и может быть включен из любой точки страницы без ограничений. Вы также можете загрузить сценарий асинхронно для повышения производительности.
Используйте несколько кнопок на странице
Вы можете разместить несколько кнопок «Сохранить на диске» на одной странице. Например, у вас может быть кнопка вверху и внизу длинной страницы.
Если параметры data-src
и data-filename
одинаковы для нескольких кнопок, сохранение с одной кнопки приведет к тому, что все аналогичные кнопки будут отображать одну и ту же информацию о ходе выполнения. Если нажаты несколько разных кнопок, они сохраняются последовательно.
Обработка кнопок и ресурсов в разных доменах
Если кнопка «Сохранить на диск» находится на отдельной странице от источника данных, запрос на сохранение файла должен использовать совместное использование ресурсов между источниками (CORS) для доступа к ресурсу. CORS — это механизм, позволяющий веб-приложению в одном домене получать доступ к ресурсам сервера в другом домене.
Например, если кнопка «Сохранить на диск» размещена на странице http://example.com/page.html
и источник данных указан как data-src="https://otherserver.com/files/file.pdf"
кнопка не сможет получить доступ к PDF-файлу, если браузер не сможет использовать CORS для доступа к ресурсу.
URL data-src
может обслуживаться из другого домена, но ответы HTTP-сервера должны поддерживать запросы HTTP OPTION и включать следующие специальные заголовки HTTP:
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Cache-Control, Content-Encoding, Content-Range
Access-Control-Allow-Origin
может иметь значение *
, чтобы разрешить CORS из любого домена, или альтернативно может указывать домены, которые имеют доступ к ресурсу через CORS, например http://example.com/page.html
. Если у вас нет сервера для размещения вашего контента, рассмотрите возможность использования Google App Engine .
Для получения дополнительной информации обратитесь к документации вашего сервера о том, как включить CORS из источника, обслуживающего кнопку «Сохранить на диск». Дополнительные сведения о включении CORS на вашем сервере см. в разделе Я хочу добавить поддержку CORS на свой сервер .
JavaScript API
JavaScript кнопки «Сохранить на диск» определяет две функции рендеринга кнопок в пространстве gapi.savetodrive
. Если вы отключите автоматический рендеринг, вам необходимо вызвать одну из этих функций, установив для parsetags
explicit
.
Метод | Описание |
---|---|
gapi.savetodrive. render ( | Отображает указанный контейнер как виджет кнопки «Сохранить на диск».
|
gapi.savetodrive. go ( | Отображает все теги и классы «Сохранить на диске» в указанном контейнере. Эту функцию следует использовать только в том случае, если для parsetags установлено значение explicit , что можно сделать из соображений производительности.
|
Пример JavaScript «Сохранить на диск» с явной загрузкой
<!DOCTYPE html>
<html>
<head>
<title>Save to Drive Demo: Explicit Load</title>
<link rel="canonical" href="http://www.example.com">
<script src="https://apis.google.com/js/platform.js" async defer>
{parsetags: 'explicit'}
</script>
</head>
<body>
<div id="container">
<div class="g-savetodrive"
data-src="//example.com/path/to/myfile.pdf"
data-filename="My Statement.pdf"
data-sitename="My Company Name">
<div>
</div>
<script type="text/javascript">
gapi.savetodrive.go('container');
</script>
</body>
</html>
Пример JavaScript «Сохранить на диск» с явным рендерингом
<!DOCTYPE html>
<html>
<head>
<title>Save to Drive Demo: Explicit Render</title>
<link rel="canonical" href="http://www.example.com">
<script>
window.___gcfg = {
parsetags: 'explicit'
};
</script>
<script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
<a href="javascript:void(0)" id="render-link">Render the Save to Drive button</a>
<div id="savetodrive-div"></div>
<script>
function renderSaveToDrive() {
gapi.savetodrive.render('savetodrive-div', {
src: '//example.com/path/to/myfile.pdf',
filename: 'My Statement.pdf',
sitename: 'My Company Name'
});
}
document.getElementById('render-link').addEventListener('click', renderSaveToDrive);
</script>
</body>
</html>
Локализуйте кнопку «Сохранить на диск»
Если ваша веб-страница поддерживает определенный язык, установите для переменной window.___gcfg.lang
этот язык. Если этот параметр не установлен, используется язык Google Диска пользователя.
Доступные значения кодов языков см. в списке поддерживаемых кодов языков .
<!DOCTYPE html>
<html>
<head>
<title>Save to Drive Demo: Async Load with Language</title>
<link rel="canonical" href="http://www.example.com">
</head>
<body>
<div class="g-savetodrive"
data-src="//example.com/path/to/myfile.pdf"
data-filename="My Statement.pdf"
data-sitename="My Company Name">
</div>
<script type="text/javascript">
window.___gcfg = {
lang: 'en-US'
};
</script>
<script src = 'https://apis.google.com/js/platform.js' async defer></script>
</body>
</html>
Поиск неисправностей
Если вы получаете ошибку XHR при загрузке URL data-src
, убедитесь, что ресурс действительно существует и что у вас нет проблемы CORS .
Если большие файлы усекаются до 2 МБ, вполне вероятно, что ваш сервер не предоставляет доступ к Content-Range, что, вероятно, связано с проблемой CORS .