העלאות מרובות חלקים ב-API ל-XML

בדף הזה נסביר על העלאות מרובות חלקים באמצעות API בפורמט XML, ב-Cloud Storage. בשיטת ההעלאה הזו מעלים קבצים בחלקים, ואז מרכיבים אותם לאובייקט יחיד באמצעות בקשה סופית. העלאות מרובות חלקים באמצעות API בפורמט XML תואמות להעלאות מרובות חלקים ב-Amazon S3.

סקירה כללית

העלאה מרובת חלקים באמצעות API בפורמט XML מאפשרת להעלות נתונים במספר חלקים ואז להרכיב אותם לאובייקט סופי. להתנהגות הזו יש מספר יתרונות, במיוחד כשמדובר בקבצים גדולים:

  • אפשר להעלות חלקים בו-זמנית, וכך לקצר את הזמן הדרוש להעלאת כל הנתונים.

  • אם אחת מפעולות ההעלאה נכשלת, צריך להעלות מחדש רק חלק מהאובייקט הכולל, ולא להפעיל מחדש את כל ההעלאה.

  • גודל הקובץ הכולל לא מצוין מראש, כך שאפשר להשתמש בהעלאות מרובות חלקים באמצעות API בפורמט XML לצורך העלאות בסטרימינג או לצורך דחיסת נתונים בזמן ההעלאה.

העלאה מרובת חלקים באמצעות API בפורמט XML כוללת שלושה שלבים:

  1. התחלת ההעלאה באמצעות בקשת POST, הכוללת ציון של כל המטא-נתונים שצריכים להיות לאובייקט השלם. התשובה תחזיר UploadId שבו משתמשים בכל הבקשות הבאות הקשורות להעלאה.

  2. העלאת הנתונים באמצעות בקשת PUT אחת או יותר.

  3. השלמת ההעלאה באמצעות בקשת POST. הבקשה הזו מחליפה כל אובייקט קיים בקטגוריה שיש לו את אותו השם.

אין הגבלה על משך הזמן שבו העלאה מרובת חלקים והחלקים שלה שהועלו יכולים להישאר לא גמורים או ללא פעילות בקטגוריה.

לתשומת ליבכם

המגבלות הבאות חלות על שימוש בהעלאות מרובות חלקים באמצעות API בפורמט XML:

  • יש מגבלות על הגודל המינימלי של חלק, על הגודל המקסימלי של חלק ועל מספר החלקים שמשמשים להרכבת ההעלאה המלאה.
  • הבקשות לא תומכות בתנאים מוקדמים.
  • לא קיימים גיבובים של MD5 בשביל אובייקטים שהועלו בשיטה הזו.
  • שיטת ההעלאה הזו לא אפשרית במסוף או ב-Google Cloud CLI. Google Cloud

כשעובדים עם העלאות מרובות חלקים באמצעות API בפורמט XML, חשוב לזכור את הדברים הבאים:

איך ספריות לקוח משתמשות בהעלאות מרובות חלקים באמצעות API בפורמט XML

בקטע הזה מוסבר איך לבצע העלאות מרובות חלקים באמצעות API בפורמט XML, באמצעות ספריות לקוח שתומכות בכך.

ספריות לקוח

Java

למידע נוסף, קראו את מאמרי העזרה של Cloud Storage Java API.

כדי לבצע אימות ב-Cloud Storage, אתם צריכים להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.

הדוגמה הבאה מפעילה העלאה מרובת חלקים:


import com.google.cloud.storage.HttpStorageOptions;
import com.google.cloud.storage.MultipartUploadClient;
import com.google.cloud.storage.MultipartUploadSettings;
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadRequest;
import com.google.cloud.storage.multipartupload.model.CreateMultipartUploadResponse;
import java.util.HashMap;
import java.util.Map;

public class CreateMultipartUpload {
  public static void createMultipartUpload(String projectId, String bucketName, String objectName) {
    // The ID of your GCP project
    // String projectId = "your-project-id";

    // The ID of your GCS bucket
    // String sourceBucketName = "your-unique-bucket-name";

    // The ID of your GCS object
    // String sourceObjectName = "your-object-name";

    HttpStorageOptions storageOptions =
        HttpStorageOptions.newBuilder().setProjectId(projectId).build();
    MultipartUploadSettings mpuSettings = MultipartUploadSettings.of(storageOptions);
    MultipartUploadClient mpuClient = MultipartUploadClient.create(mpuSettings);

    System.out.println("Initiating multipart upload for " + objectName);

    Map<String,