Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Dosyaları Web'e Yükleyin

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

Varsayılan Google App Engine uygulaması ve Firebase bu paketi paylaştığından, genel erişimin yapılandırılması, yeni yüklenen App Engine dosyalarının da herkes tarafından erişilebilir olmasını sağlayabilir. Kimlik doğrulamasını kurduğunuzda Depolama paketinize erişimi yeniden kısıtladığınızdan emin olun.

Dosyaları yükle

Cloud Storage'a bir dosya yüklemek için önce dosya adı dahil olmak üzere dosyanın tam yolu için bir referans oluşturursunuz.

// Create a root reference
var storageRef = firebase.storage().ref();

// Create a reference to 'mountains.jpg'
var mountainsRef = storageRef.child('mountains.jpg');

// Create a reference to 'images/mountains.jpg'
var mountainImagesRef = storageRef.child('images/mountains.jpg');

// While the file names are the same, the references point to different files
mountainsRef.name === mountainImagesRef.name            // true
mountainsRef.fullPath === mountainImagesRef.fullPath    // false

Bir Blob veya File Yükle

Uygun bir referans oluşturduktan sonra, put() yöntemini çağırırsınız. put() , dosyaları JavaScript Dosyası ve Blob API'leri aracılığıyla alır ve Bulut Depolama'ya yükler.

var file = ... // use the Blob or File API
ref.put(file).then(function(snapshot) {
  console.log('Uploaded a blob or file!');
});

Bir Byte Dizisinden Yükleme

File ve Blob türlerine ek olarak put() , Cloud Storage'a bir Uint8Array da yükleyebilir.

// Uint8Array
var bytes = new Uint8Array([0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21]);
ref.put(bytes).then(function(snapshot) {
  console.log('Uploaded an array!');
});

Bir Dizeden Yükle

Bir Blob , File veya Uint8Array mevcut değilse Cloud Storage'a ham, base64 , base64url veya data_url kodlu bir dize yüklemek için putString() yöntemini kullanabilirsiniz.

// Raw string is the default if no format is provided
var message = 'This is my message.';
ref.putString(message).then(function(snapshot) {
  console.log('Uploaded a raw string!');
});

// Base64 formatted string
var message = '5b6p5Y+344GX44G+44GX44Gf77yB44GK44KB44Gn44Go44GG77yB';
ref.putString(message, 'base64').then(function(snapshot) {
  console.log('Uploaded a base64 string!');
});

// Base64url formatted string
var message = '5b6p5Y-344GX44G-44GX44Gf77yB44GK44KB44Gn44Go44GG77yB';
ref.putString(message, 'base64url').then(function(snapshot) {
  console.log('Uploaded a base64url string!');
});

// Data URL string
var message = 'data:text/plain;base64,5b6p5Y+344GX44G+44GX44Gf77yB44GK44KB44Gn44Go44GG77yB';
ref.putString(message, 'data_url').then(function(snapshot) {
  console.log('Uploaded a data_url string!');
});

put() ve putString() , söz olarak kullanabileceğiniz veya yüklemenin durumunu yönetmek ve izlemek için kullanabileceğiniz bir UploadTask döndürür.

Referans dosyanın tam yolunu tanımladığından, boş olmayan bir yola yüklediğinizden emin olun.

Dosya Meta Verileri Ekle

Bir dosya yüklerken, o dosya için meta verileri de belirtebilirsiniz. Bu meta veriler, name , size ve contentType (genellikle MIME türü olarak adlandırılır) gibi tipik dosya meta veri özelliklerini içerir. Cloud Storage, dosyanın diskte depolandığı dosya uzantısından içerik türünü otomatik olarak çıkarır, ancak meta contentType bir contentType belirtirseniz, otomatik olarak algılanan türü geçersiz kılar. Herhangi bir contentType meta verisi belirtilmezse ve dosyanın bir dosya uzantısı yoksa, Cloud Storage varsayılan olarak application/octet-stream türünü kullanır. Dosya meta verileri hakkında daha fazla bilgi Dosya Meta Verilerini Kullan bölümünde bulunabilir.

// Create file metadata including the content type
var metadata = {
  contentType: 'image/jpeg',
};

// Upload the file and metadata
var uploadTask = storageRef.child('images/mountains.jpg').put(file, metadata);

Yüklemeleri Yönet

Yüklemeleri başlatmanın yanı sıra, pause() , resume() ve cancel() yöntemlerini kullanarak yüklemeleri pause() , resume() ve cancel() . pause() veya resume() çağrısı, pause veya running durumu değişikliklerini artıracaktır. Cancel cancel() yönteminin çağrılması, yüklemenin başarısız olmasına ve yüklemenin iptal edildiğini belirten bir hatanın döndürülmesine neden olur.

// Upload the file and metadata
var uploadTask = storageRef.child('images/mountains.jpg').put(file);

// Pause the upload
uploadTask.pause();

// Resume the upload
uploadTask.resume();

// Cancel the upload
uploadTask.cancel();

Yükleme İlerlemesini İzleyin

Yükleme sırasında, yükleme görevi state_changed gözlemcisinde aşağıdaki gibi ilerleme olaylarını artırabilir:

Etkinlik tipi Tipik Kullanım
running Bu olay, görev yüklemeye başladığında veya devam ettiğinde tetiklenir ve genellikle pause olayı ile birlikte kullanılır. Daha büyük yüklemeler için bu etkinlik, bir ilerleme güncellemesi olarak birden çok kez tetiklenebilir.
pause Bu olay, yükleme her duraklatıldığında tetiklenir ve genellikle running olay ile birlikte kullanılır.

Bir olay meydana geldiğinde, bir TaskSnapshot nesnesi geri gönderilir. Bu anlık görüntü, olayın meydana geldiği andaki görevin değişmez bir görünümüdür. Bu nesne aşağıdaki özellikleri içerir:

Emlak Tür Açıklama
bytesTransferred Number Bu anlık görüntü alındığında aktarılan toplam bayt sayısı.
totalBytes Number Yüklenmesi beklenen toplam bayt sayısı.
state firebase.storage.TaskState Yüklemenin mevcut durumu.
metadata firebaseStorage.Metadata Yükleme tamamlanmadan önce, meta veriler sunucuya gönderilir. Yükleme tamamlandıktan sonra, sunucunun geri gönderdiği meta veriler.
task firebaseStorage.UploadTask Görevi "duraklatmak", "sürdürmek" veya "iptal etmek" için kullanılabilen bu görevin anlık görüntüsüdür.
ref firebaseStorage.Reference Bu görevin geldiği referans.

TaskSnapshot özellikleriyle birlikte durumdaki bu değişiklikler, yükleme olaylarını izlemek için basit ama güçlü bir yol sağlar.

var uploadTask = storageRef.child('images/rivers.jpg').put(file);

// Register three observers:
// 1. 'state_changed' observer, called any time the state changes
// 2. Error observer, called on failure
// 3. Completion observer, called on successful completion
uploadTask.on('state_changed', function(snapshot){
  // Observe state change events such as progress, pause, and resume
  // Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
  var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
  console.log('Upload is ' + progress + '% done');
  switch (snapshot.state) {
    case firebase.storage.TaskState.PAUSED: // or 'paused'
      console.log('Upload is paused');
      break;
    case firebase.storage.TaskState.RUNNING: // or 'running'
      console.log('Upload is running');
      break;
  }
}, function(error) {
  // Handle unsuccessful uploads
}, function() {
  // Handle successful uploads on complete
  // For instance, get the download URL: https://firebasestorage.googleapis.com/...
  uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) {
    console.log('File available at', downloadURL);
  });
});

Hata yönetimi

Yerel dosyanın mevcut olmaması veya kullanıcının istenen dosyayı yükleme iznine sahip olmaması da dahil olmak üzere, yüklemede hataların meydana gelmesinin birkaç nedeni vardır. Belgelerin Hataları İşleme bölümünde hatalarla ilgili daha fazla bilgi bulunabilir.

Tam Örnek

İlerleme izleme ve hata işleme ile tam bir yükleme örneği aşağıda gösterilmiştir:

// File or Blob named mountains.jpg
var file = ...

// Create the file metadata
var metadata = {
  contentType: 'image/jpeg'
};

// Upload file and metadata to the object 'images/mountains.jpg'
var uploadTask = storageRef.child('images/' + file.name).put(file, metadata);

// Listen for state changes, errors, and completion of the upload.
uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, // or 'state_changed'
  function(snapshot) {
    // Get task progress, including the number of bytes uploaded and the total number of bytes to be uploaded
    var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
    console.log('Upload is ' + progress + '% done');
    switch (snapshot.state) {
      case firebase.storage.TaskState.PAUSED: // or 'paused'
        console.log('Upload is paused');
        break;
      case firebase.storage.TaskState.RUNNING: // or 'running'
        console.log('Upload is running');
        break;
    }
  }, function(error) {

  // A full list of error codes is available at
  // https://firebase.google.com/docs/storage/web/handle-errors
  switch (error.code) {
    case 'storage/unauthorized':
      // User doesn't have permission to access the object
      break;

    case 'storage/canceled':
      // User canceled the upload
      break;

    ...

    case 'storage/unknown':
      // Unknown error occurred, inspect error.serverResponse
      break;
  }
}, function() {
  // Upload completed successfully, now we can get the download URL
  uploadTask.snapshot.ref.getDownloadURL().then(function(downloadURL) {
    console.log('File available at', downloadURL);
  });
});

Dosyaları yüklediğinize göre, şimdi bunları Bulut Depolama'dan nasıl indireceğinizi öğrenelim.