הלחצן 'שמירה ב-Drive' מאפשר למשתמשים לשמור קבצים ב-Drive מהאתר שלכם. לדוגמה, נניח שהאתר שלכם מציג מספר מדריכי הפעלה (PDF) שמשתמשים יכולים להוריד. ניתן להציב את הלחצן 'Save to Drive' לצד כל מדריך, כדי לאפשר למשתמשים לשמור מדריכים בתיקייה 'האחסון שלי'.
כשהמשתמש לוחץ על הלחצן, הקובץ יורד ממקור הנתונים ומועלה ל-Google Drive עם קבלת הנתונים. מכיוון שההורדה מתבצעת בהקשר של הדפדפן של המשתמש, התהליך הזה מאפשר למשתמש לאמת את הפעולה לשמירת קבצים בסשן הדפדפן הקיים.
דפדפנים נתמכים
הלחצן 'שמירה ב-Drive' תומך בדפדפנים האלה.
הוספת הלחצן 'שמירה ב-Drive' לדף
כדי ליצור לחצן "Save to Drive" [שמירה ב-Drive], צריך להוסיף את הסקריפט הבא לדף האינטרנט:
<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 הזו חייבת להיות מוצגת מאותו דומיין של הדף שבו היא מוצבת, או שהיא נגישה באמצעות Cross Origin Resource Sharing (CORS). אם הלחצן והמשאב נמצאים בדומיינים שונים, קראו את המאמר טיפול בלחצנים ובמשאבים בדומיינים שונים.(#domain).
- כדי להציג את הקובץ כשאותו דף מוצג גם ב-http וגם ב-https, צריך לציין את המשאב ללא פרוטוקול כמו
data-src="//example.com/files/file.pdf"
, שמשתמש בפרוטוקול המתאים על סמך הגישה לדף המארח.
data-filename
הוא פרמטר נדרש שמכיל את השם שמשמש לקובץ השמירה.data-sitename
הוא פרמטר נדרש שמכיל את שם האתר שמספק את הקובץ.
ניתן למקם את המאפיינים האלה בכל רכיב HTML. עם זאת, הרכיבים הנפוצים ביותר הם div
, span
או button
. כל אחד מהרכיבים האלו מוצג בצורה מעט שונה בזמן שהדף נטען, מפני שהדפדפן מעבד את הרכיב לפני ש-JavaScript 'שמור ב-Drive' מעבד מחדש את הרכיב.
צריך לטעון את הסקריפט באמצעות פרוטוקול HTTPS, ואפשר לכלול אותו מכל נקודה בדף ללא הגבלה. אפשר גם לטעון את הסקריפט באופן אסינכרוני כדי לשפר את הביצועים.
שימוש במספר לחצנים בדף אחד
אפשר להציב כמה לחצני 'שמירה ב-Drive' באותו דף. לדוגמה, יכול להיות לכם לחצן בחלק העליון ובחלק התחתון של דף ארוך.
אם הפרמטרים data-src
ו-data-filename
זהים במספר לחצנים, שמירה בלחיצה אחת תגרום לכל הלחצנים הדומים להציג את אותו מידע התקדמות. אם לוחצים על מספר לחצנים שונים, הם נשמרים ברצף.
טיפול בלחצנים ובמשאבים בדומיינים שונים
אם הלחצן 'Save to Drive' נמצא בדף נפרד ממקור הנתונים, כדי לקבל גישה למשאב בבקשה לשמור את הקובץ, צריך להשתמש ב-Cross Origin Resource Sharing. CORS היא מנגנון שמאפשר לאפליקציית אינטרנט בדומיין אחד לגשת למשאבים משרת בדומיין אחר.
לדוגמה, אם הלחצן 'Save to Drive' ממוקם בדף ב-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 מהמקור שמציג את הלחצן 'שמירה ב-Drive'. למידע נוסף על הפעלת CORS בשרת שלי, תוכלו לקרוא את המאמר אני רוצה להוסיף תמיכת CORS לשרת שלי.
ממשק API של JavaScript
הלחצן 'שמירה ב-Drive' מגדיר שתי פונקציות של עיבוד לחצנים במרחב השמות gapi.savetodrive
. אם משביתים את העיבוד האוטומטי, צריך להפעיל את אחת מהפונקציות האלה על ידי הגדרת הערך parsetags
ל-explicit
.
שיטה | התיאור |
---|---|
gapi.savetodrive.render( |
עיבוד של מאגר התגים שצוין כווידג'ט של לחצן 'שמירה ב-Drive'.
|
gapi.savetodrive.go( |
עיבוד כל התגים והמחלקות של 'שמירה ב-Drive' במאגר התגים שצוין.
יש להשתמש בפונקציה הזו רק אם parsetags מוגדר לערך explicit , ויכול להיות שהתכונה הזו תפעל כדי לשפר את הביצועים.
|
דוגמה ל-JavaScript 'שמירה ב-Drive' עם טעינה מפורשת
<!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 'שמירה ב-Drive' עם עיבוד מפורש
<!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'
אם דף האינטרנט תומך בשפה מסוימת, מגדירים את המשתנה window.___gcfg.lang
לשפה הזו. אם היא לא מוגדרת, ייעשה שימוש בשפה של המשתמש ב-Google Drive.
הערכים הזמינים של קוד השפה מופיעים ברשימת הקודים הנתמכים של השפות.
<!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.
אם קבצים גדולים נחתכים ל-2MB, כנראה שהשרת לא חושף את טווח התוכן, כנראה שיש בעיית CORS.