Google стремится к продвижению расового равенства для чернокожего населения. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Загрузка файлов с Cloud Storage для Unity

Cloud Storage позволяет разработчикам быстро и легко загружать файлы на Google Cloud Storage ведро при условии и управляется Firebase.

Создать Ссылку

Чтобы загрузить файл, первый создать ссылку облачного хранилища в файл , который вы хотите загрузить.

Вы можете создать ссылку, добавляя дочерние пути к корню хранения, или вы можете создать ссылку из существующего gs:// или https:// URL ссылка объекта в Cloud Storage.

// Create a root reference
Firebase.Storage.StorageReference storage_ref = storage.Reference();

// Create a reference to "mountains.jpg"
Firebase.Storage.StorageReference mountains_ref = storage_ref.Child("mountains.jpg");

// Create a reference to 'images/mountains.jpg'
Firebase.Storage.StorageReference mountain_images_ref =
  storage_ref.Child("images/mountains.jpg");

// While the file names are the same, the references point to different files
mountains_ref.Name == mountain_images_ref.Name; // true
mountains_ref.Path == mountain_images_ref.Path; // false

Вы не можете загружать данные со ссылкой на корень вашего Google Cloud Storage ведра. Ваша ссылка должна указывать на дочерний URL.

Загрузить файлы

Если у вас есть ссылки, вы можете загрузить файлы в облачном хранилище двух способов:

  1. Загрузка из массива байтов в памяти
  2. Загрузить из файла пути, представляющего файл на устройстве

Загрузить из данных в памяти

PutBytesAsync() метод является самым простым способом , чтобы загрузить файл в облачном хранилище. PutBytesAsync() принимает байт [] и возвращает System.Task<Firebase.Storage.StorageMetadata> , который будет содержать информацию о файле , когда задача выполнена. При желании вы можете использовать IProgress<UploadState> (обычно StorageProgress<UploadState> ) для мониторинга состояния загрузки.

// Data in memory
var custom_bytes = new byte[] { ... };

// Create a reference to the file you want to upload
Firebase.Storage.StorageReference rivers_ref = storage_ref.Child("images/rivers.jpg");

// Upload the file to the path "images/rivers.jpg"
rivers_ref.PutBytesAsync(custom_bytes)
  .ContinueWith ((Task<StorageMetadata> task) => {
    if (task.IsFaulted || task.IsCanceled) {
        Debug.Log(task.Exception.ToString());
        // Uh-oh, an error occurred!
    } else {
        // Metadata contains file metadata such as size, content-type, and download URL.
        Firebase.Storage.StorageMetadata metadata = task.Result;
        string download_url = metadata.DownloadUrl.ToString();
        Debug.Log("Finished uploading...");
        Debug.Log("download url = " + download_url);
    }
});

Загрузить из локального файла

Вы можете загружать локальные файлы на устройствах, таких как фотографии и видео с камеры, с PutFileAsync() метод. PutFileAsync() принимает string , представляющую путь к файлу и возвращает System.Task<Firebase.Storage.StorageMetadata> , который будет содержать информацию о файле , когда задача выполнена. При желании вы можете использовать IProgress<UploadState> (обычно StorageProgress<UploadState> ) для мониторинга состояния загрузки.

// File located on disk
string local_file = ...

// Create a reference to the file you want to upload
Firebase.Storage.StorageReference rivers_ref = storage_ref.Child("images/rivers.jpg");

// Upload the file to the path "images/rivers.jpg"
rivers_ref.PutFileAsync(local_file)
  .ContinueWith ((Task<StorageMetadata> task) => {
    if (task.IsFaulted || task.IsCanceled) {
      Debug.Log(task.Exception.ToString());
      // Uh-oh, an error occurred!
    } else {
      // Metadata contains file metadata such as size, content-type, and download URL.
      Firebase.Storage.StorageMetadata metadata = task.Result;
      string download_url = metadata.DownloadUrl.ToString();
      Debug.Log("Finished uploading...");
      Debug.Log("download url = " + download_url);
    }
  });

Если вы хотите , чтобы активно контролировать вашу загрузку, вы можете использовать StorageProgress класс или собственный класс , который реализует IProgress<UploadState> , с PutFileAsync() или PutBytesAsync() методы. См Управления загрузок для получения дополнительной информации.

Добавить файл метаданных

Вы можете также включать метаданные при загрузке файлов. Эти метаданные содержат типичные свойства метаданных файла , такие как Name , Size и ContentType (обычно называемый как тип MIME). PutFileAsync() метод автоматически выводит тип содержимого из расширения файла, но вы можете переопределить автоматического определения типа, указав ContentType в метаданных. Если вы не обеспечиваете ContentType и Cloud Storage не может сделать вывод по умолчанию от расширения файла, Cloud Storage использует application/octet-stream . См Metadata Использование файла в разделе Дополнительные сведения о метаданных файла.

// Create storage reference
Firebase.Storage.StorageReference mountains_ref = storage_ref.Child("images/mountains.jpg");

var custom_bytes = new byte[] { ... };

// Create file metadata including the content type
var new_metadata = new Firebase.Storage.MetadataChange();
new_metadata.ContentType = "image/jpeg";

// Upload data and metadata
mountains_ref.PutBytesAsync(custom_bytes, new_metadata, null,
                            CancellationToken.None, null);  // .ContinueWith(...
// Upload file and metadata
mountains_ref.PutFileAsync(local_file, new_metadata, null,
                           CancellationToken.None, null);  // .ContinueWith(...

Монитор загрузки Прогресс

Вы можете прикрепить слушатель к загрузкам для того, чтобы следить за ходом загрузки. Слушатель следует стандартной System.IProgress<T> интерфейс. Вы можете использовать экземпляр StorageProgress класса, чтобы обеспечить собственный Action<T> в качестве обратного вызова для прогресса клещи.

// Start uploading a file
var task = storage_ref.Child("images/mountains.jpg")
    .PutFileAsync(local_file, null,
      new Firebase.Storage.StorageProgress<UploadState>(state => {
          // called periodically during the upload
          Debug.Log(String.Format("Progress: {0} of {1} bytes transferred.",
                             state.BytesTransferred, state.TotalByteCount));
      }), CancellationToken.None, null);

task.ContinueWith(resultTask => {
    if (!resultTask.IsFaulted && !resultTask.IsCancelled) {
        Debug.Log("Upload finished.");
    }
});

Обработка ошибок

Есть целый ряд причин, почему ошибки могут возникнуть при загрузке, в том числе локального файла не существует, или пользователь не имеющее разрешения на загрузку нужного файла. Вы можете найти более подробную информацию об ошибках в Ошибки Handle разделе Документов.

Следующие шаги

Теперь, когда вы загрузили файлы, давайте узнаем , как загрузить их от Cloud Storage.