ปุ่ม "บันทึกไปยังไดรฟ์" ช่วยให้ผู้ใช้บันทึกไฟล์ไปยังไดรฟ์จากเว็บไซต์ของคุณได้ ตัวอย่างเช่น สมมติว่าเว็บไซต์ของคุณแสดงคู่มือการใช้งาน (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 นี้ต้องแสดงจากโดเมนเดียวกับหน้าเว็บที่วาง 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 ของปุ่ม "บันทึกไปยังไดรฟ์" จะกำหนดฟังก์ชันการแสดงผลปุ่ม 2 ฟังก์ชันภายใต้เนมสเปซ 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 MB แสดงว่าเซิร์ฟเวอร์ของคุณอาจไม่ได้แสดง Content-Range ซึ่งน่าจะเป็นปัญหาเกี่ยวกับ CORS