Google, Siyah topluluklar için ırksal eşitliği ilerletmeye kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

C ++ için Cloud Storage ile Dosyaları İndirin

Cloud Storage, geliştiricilerin Firebase tarafından sağlanan ve yönetilen bir Google Cloud Storage grubundan hızlı ve kolay bir şekilde dosya indirmelerine olanak tanır.

Referans Oluşturma

Bir dosyayı indirmek için, önce indirmek istediğiniz dosyaya bir Cloud Storage referansı oluşturun .

Depolama köküne alt yollar ekleyerek başvuru oluşturabilir veya Cloud Storage'daki bir nesneye başvuruda bulunan mevcut bir gs:// veya https:// URL'sinden başvuru oluşturabilirsiniz.

// Create a reference with an initial file path and name
StorageReference path_reference = storage->GetReference("images/stars.jpg");

// Create a reference from a Google Cloud Storage URI
StorageReference gs_reference = storage->GetReferenceFromUrl("gs://bucket/images/stars.jpg");

// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
StorageReference https_reference = storage->GetReferenceFromUrl("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");

Dosyaları indir

Referansınız olduğunda, dosyaları Cloud Storage'dan üç şekilde indirebilirsiniz:

  1. Bellekteki bir arabelleğe indirme
  2. Cihazdaki belirli bir yola indirme
  3. Çevrimiçi dosyayı temsil eden bir dize URL'si oluşturun

Bellekte indir

GetBytes() yöntemini kullanarak dosyayı bellekteki bir bayt arabelleğine indirin. Bu, bir dosyayı hızlı bir şekilde indirmenin en kolay yoludur, ancak dosyanızın tüm içeriğini belleğe yüklemelidir. Uygulamanızın kullanılabilir belleğinden daha büyük bir dosya talep ederseniz uygulamanız kilitlenir. Bellek sorunlarına karşı koruma sağlamak için, maksimum boyutu uygulamanızın işleyebileceğini bildiğiniz bir şeye ayarladığınızdan emin olun veya başka bir indirme yöntemi kullanın.

// Create a reference to the file you want to download
StorageReference island_ref = storage_ref.Child("images/island.jpg");

// Download in memory with a maximum allowed size of 1MB (1 * 1024 * 1024 bytes)
const size_t kMaxAllowedSize = 1 * 1024 * 1024
int8_t byte_buffer[kMaxAllowedSize];
firebase::Future future = island_ref.GetBytes(byte_buffer, kMaxAllowedSize);

Bu noktada istek yapıldı, ancak dosyayı okuyabilmek için Geleceğin tamamlanmasını beklememiz gerekiyor. Oyunlar genellikle bir döngüde çalıştığından ve diğer uygulamalardan daha az geri çağrı güdümlü olduğundan, genellikle tamamlama için anket yaparsınız.

// In the game loop that polls for the result...

if (future.status() != firebase::kFutureStatusPending) {
  if (future.status() != firebase::kFutureStatusComplete) {
    LogMessage("ERROR: GetBytes() returned an invalid future.");
    // Handle the error...
  } else if (future.Error() != firebase::storage::kErrorNone) {
    LogMessage("ERROR: GetBytes() returned error %d: %s", future.Error(),
               future.error_message());
    // Handle the error...
  } else {
    // byte_buffer is now populated with data for "images/island.jpg"
  }
}

Yerel bir dosyaya indir

GetFile() yöntemi bir dosyayı doğrudan yerel bir aygıta indirir. Kullanıcılarınız çevrimdışı durumdayken dosyaya erişmek veya farklı bir uygulamada paylaşmak istiyorsa bunu kullanın.

// Create a reference to the file you want to download
StorageReference islandRef = storage_ref.Child("images/island.jpg"];

// Create local filesystem URL
const char* local_url = "file:///local/images/island.jpg";

// Download to the local filesystem
Future future = islandRef.GetFile(local_url);

// Wait for Future to complete...

if (future.Error() != firebase::storage::kErrorNone) {
  // Uh-oh, an error occurred!
} else {
  // The file has been downloaded to local file URL "images/island.jpg"
}

GetFile() , indirmenizi yönetmek için kullanabileceğiniz isteğe bağlı bir Controller bağımsız değişkeni alır. Daha fazla bilgi için İndirmeleri Yönetme konusuna bakın.

Bir indirme URL'si oluşturun

URL'lere dayalı indirme altyapınız zaten varsa veya yalnızca bir URL'nin paylaşılmasını istiyorsanız, depolama referansında GetDownloadUrl() yöntemini çağırarak dosya indirme URL'sini alabilirsiniz.

// Create a reference to the file you want to download
StorageReference stars_ref = storage_ref.Child("images/stars.jpg");

// Fetch the download URL
firebase::Future future = stars_ref.GetDownloadUrl();

// Wait for Future to complete...

if (future.Error() != firebase::storage::kErrorNone) {
  // Uh-oh, an error occurred!
} else {
  // Get the download URL for 'images/stars.jpg'
  std::string download_url = future.Result();
}

İndirilenleri Yönet

İndirmeleri başlatmaya ek olarak, isteğe bağlı olarak GetBytes() veya GetFile() yöntemlerine iletebileceğiniz Controller Pause() , Resume() ve Cancel() yöntemlerini kullanarak indirme işlemlerini duraklatabilir, devam ettirebilir ve iptal edebilirsiniz.

// Start downloading a file
Controller controller;
storage_ref.Child("images/mountains.jpg").GetFile(local_file, nullptr, &controller);

// Pause the download
controller.Pause();

// Resume the download
controller.Resume();

// Cancel the download
controller.Cancel();

İndirme İlerlemesini İzleyin

İndirme işleminin ilerlemesini izlemek için indiricilere dinleyiciler ekleyebilirsiniz.

class MyListener : public firebase::storage::Listener {
 public:
  virtual void OnProgress(firebase::storage::Controller* controller) {
    // A progress event occurred
  }
};

{
  // Start uploading a file
  MyEventListener my_listener;
  storage_ref.Child("images/mountains.jpg").GetFile(local_file, my_listener);
}

İşlem Hataları

Dosya mevcut değil veya kullanıcının istenen dosyaya erişim iznine sahip olmaması da dahil olmak üzere, indirme sırasında hataların oluşmasının birkaç nedeni olabilir. Hatalar hakkında daha fazla bilgi, dokümanların Hataları Ele Alma bölümünde bulunabilir.

Sonraki adımlar

Ayrıca, Cloud Storage'da depolanan dosyalar için meta verileri alabilir ve güncelleyebilirsiniz .