"Drive'a kaydet" düğmesi, kullanıcıların dosyaları web sitenizden Drive'a kaydetmesine olanak tanır. Örneğin, web sitenizde kullanıcıların indirebileceği çeşitli talimat kılavuzlarının (PDF) listelendiğini varsayalım. "Drive'a kaydet" düğmesi, kullanıcıların kılavuzları Drive'ım klasörüne kaydetmesine olanak tanımak için her kılavuzun yanına yerleştirilebilir.
Kullanıcı düğmeyi tıkladığında dosya, veri kaynağından indirilir ve veriler alındıkça Google Drive'a yüklenir. İndirme işlemi kullanıcının tarayıcısında yapıldığından bu işlem, kullanıcının dosyaları kaydetme işlemini mevcut tarayıcı oturumunu kullanarak doğrulamasını sağlar.
Desteklenen tarayıcılar
"Drive'a kaydet" düğmesi bu tarayıcıları destekler.
Sayfaya "Drive'a kaydet" düğmesini ekleme
"Drive'a kaydet" düğmesinin bir örneğini oluşturmak için web sayfanıza aşağıdaki komut dosyasını ekleyin:
<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>
Burada:
class
, standart bir HTML etiketi kullanıyorsanızg-savetodrive
olarak ayarlanması gereken zorunlu bir parametredir.data-src
, kaydedilecek dosyanın URL'sini içeren zorunlu bir parametredir.- URL'ler mutlak veya göreli olabilir.
data-src
URL'si, düğmenin barındırıldığı alanla aynı alan, alt alan adı ve protokolden yayınlanabilir. Sayfa ve veri kaynağı arasında eşleşen protokoller kullanmanız gerekir.- Veri URI'leri ve
file://
URL'leri desteklenmez. - Tarayıcının aynı kaynak politikası nedeniyle bu URL, yerleştirildiği sayfa ile aynı alan adından sunulmalı veya merkezler arası kaynak paylaşımı (CORS) kullanılarak erişilebilir olmalıdır. Düğme ve kaynak farklı alanlarda bulunuyorsa Farklı alanlardaki düğmeleri ve kaynakları işleme başlıklı makaleyi inceleyin.(#domain)
- Aynı sayfa hem http hem de https tarafından sunulduğunda dosyayı sunmak için kaynağı protokol olmadan belirtin. Örneğin,
data-src="//example.com/files/file.pdf"
, barındırma sayfasına nasıl erişildiğine bağlı olarak uygun protokolü kullanır.
data-filename
, kayıt dosyası için kullanılan adı içeren zorunlu bir parametredir.data-sitename
, dosyayı sağlayan web sitesinin adını içeren zorunlu bir parametredir.
Bu özellikleri herhangi bir HTML öğesine yerleştirebilirsiniz. Ancak en sık kullanılan öğeler div
, span
veya button
'dir. Bu öğelerin her biri, sayfa yüklenirken biraz farklı şekilde gösterilir. Bunun nedeni, tarayıcının öğeyi "Drive'a kaydet" JavaScript'i öğeyi yeniden oluşturmadan önce oluşturmasıdır.
Bu komut dosyası HTTPS protokolü kullanılarak yüklenmeli ve sayfadaki herhangi bir noktadan kısıtlama olmadan eklenebilmelidir. Performansı artırmak için komut dosyasını eşzamansız olarak da yükleyebilirsiniz.
Bir sayfada birden fazla düğme kullanma
Aynı sayfaya birden fazla "Drive'a kaydet" düğmesi yerleştirebilirsiniz. Örneğin, uzun bir sayfanın üst ve alt kısmında bir düğme olabilir.
Birden fazla düğme için data-src
ve data-filename
parametreleri aynıysa bir düğmeden yapılan kaydetme işlemi, benzer tüm düğmelerin aynı ilerleme bilgilerini göstermesine neden olur. Birden fazla farklı düğme tıklanırsa bunlar sırayla kaydedilir.
Farklı alanlardaki düğmeleri ve kaynakları işleme
"Drive'a kaydet" düğmeniz veri kaynağından ayrı bir sayfadaysa dosyayı kaydetme isteği, kaynağa erişmek için merkezler arası kaynak paylaşımını (CORS) kullanmalıdır. CORS, bir alandaki web uygulamasının farklı bir alandaki sunucunun kaynaklarına erişmesine olanak tanıyan bir mekanizmadır.
Örneğin, bir sayfaya http://example.com/page.html
konumunda "Drive'a kaydet" düğmesi yerleştirilmişse ve veri kaynağı data-src="https://otherserver.com/files/file.pdf"
olarak belirtilmişse tarayıcı kaynağa erişmek için CORS'u kullanamadığı sürece düğme PDF'ye erişemez.
data-src
URL'si başka bir alandan sunulabilir ancak HTTP sunucusundan gelen yanıtların HTTP OPTION isteklerini desteklemesi ve aşağıdaki özel HTTP üst bilgilerini içermesi gerekir:
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Range
Access-Control-Expose-Headers: Cache-Control, Content-Encoding, Content-Range
Access-Control-Allow-Origin
, herhangi bir alandan CORS'a izin vermek için *
değerine sahip olabilir veya alternatif olarak http://example.com/page.html
gibi CORS aracılığıyla kaynağa erişimi olan alanları belirtebilir. İçeriğinizi barındırabileceğiniz bir sunucunuz yoksa Google App Engine'i kullanabilirsiniz.
Daha fazla bilgi için "Drive'a kaydet" düğmenize hizmet veren kaynakta CORS'u etkinleştirme hakkında sunucu belgelerinize bakın. Sunucunuzda CORS'u etkinleştirme hakkında daha fazla bilgi için Sunucuma CORS desteği eklemek istiyorum başlıklı makaleyi inceleyin.
JavaScript API
"Drive'a kaydet" düğmesi JavaScript'i, gapi.savetodrive
ad alanında iki düğme oluşturma işlevi tanımlar. Otomatik oluşturmayı devre dışı bırakırsanız parsetags
değerini explicit
olarak ayarlayarak bu işlevlerden birini çağırmanız gerekir.
Yöntem | Açıklama |
---|---|
gapi.savetodrive.render( |
Belirtilen kapsayıcıyı "Drive'a kaydet" düğmesi widget'ı olarak oluşturur.
|
gapi.savetodrive.go( |
Belirtilen kapsayıcıdaki tüm "Drive'a kaydet" etiketlerini ve sınıflarını oluşturur.
Bu işlev yalnızca parsetags , explicit olarak ayarlanmışsa kullanılmalıdır. Bu ayarı performans nedenleriyle yapabilirsiniz.
|
Açık yüklemeyle "Drive'a kaydet" JavaScript örneği
<!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>
Açıkça oluşturma içeren örnek "Drive'a kaydet" JavaScript'i
<!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>
"Drive'a kaydet" düğmesini yerelleştirme
Web sayfanız belirli bir dili destekliyorsa window.___gcfg.lang
değişkenini bu dile ayarlayın. Ayarlanmazsa kullanıcının Google Drive dili kullanılır.
Kullanılabilir dil kodu değerleri için desteklenen dil kodları listesine bakın.
<!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>
Sorun giderme
data-src
URL'nizi indirirken XHR hatası alırsanız kaynağın gerçekten mevcut olduğunu ve CORS sorununuz olmadığını doğrulayın.
Büyük dosyalar 2 MB'a kısaltılıyorsa sunucunuzun Content-Range'i kullanıma sunmaması olasıdır. Bu durum büyük olasılıkla bir CORS sorunudur.