Хобрук: Ваш путь к мастерству в программировании

Получение UID загрузчика файла

В первой части моего приложения пользователи могут загружать файлы в «общий» вид, где они перечислены. Я назначаю каждое имя файла и URL-адрес конкретному пользователю. Затем я могу отсортировать пользователей и получить все имена файлов.

Я также реализовал загрузку файлов в разные папки в моей базе данных. Под разными папками я подразумеваю, что в табличном представлении есть «файлы» и «папки». Это работает хорошо. С помощью этой функции я не назначаю имя файла и URL-адрес конкретному пользователю. Файлы попадают непосредственно в определенную папку в базе данных (я не хочу, чтобы мой «общий» вид показывал их).

Однако функция удаления необходима. Есть ли способ получить что-то вроде UID пользователя, который загрузил файл (или что-то еще, что я могу использовать, чтобы связать пользователя с ним)? Я прочитал в документации firebase, что могу создавать пользовательские метаданные, но я новичок и понятия не имею об этом (также я не могу найти примеры пользовательских метаданных)


Ответы:


1

Когда вы загружаете файл или после того, как вы загрузили файл, вы можете создать объект StorageMetadata для указания всех обычных метаданных, которые вы ожидаете, таких как contentType и кодировка и т. д. Они также дают вам элемент с именем customMetadata, который это словарь с тем, что вы хотите в нем. Итак, если вы хотите добавить туда userUID, вы можете сделать это следующим образом:

let myMetadata = StorageMetadata()
myMetadata.customMetadata = ["userUID" : "abc123"]

Получив этот объект метаданных, вы можете использовать ссылку на хранилище для обновления метаданных в вашем файле.

let fileReference = storageReference.child("files/userImage.jpg")

fileReference.updateMetadata(metadata) { (metadata, error) in
  //Check to see if you need to handle an error, etc.
}

Вы также можете сделать это во время загрузки файла:

let fileReference = storageReference.child("files/userThumnail.jpg")

fileReference.putData(imageData, metadata: myMetadata) { (metadata, error) in
  //Handle error, etc.
}

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

let fileReference = storageReference.child("files/userImage.jpg")

fileReference.getMetadata { (metadata, error) in
  if let data = metadata, let userUID = data.customMetadata["userUID"] as? String {
    //Got it.  Do whatever you need with it.
    print(userUID)
  }
}
01.12.2017
  • Я верю, что это то, что мне нужно! попробую реализовать. Большое спасибо за ваше руководство. 01.12.2017
  • Еще один вопрос. Есть ли способ получить доступ к метаданным для данного URL? 01.12.2017
  • Конечно. Вы можете получить ссылку на файл с помощью let fileReference = Storage.storage().reference(forURL: "your_url"). Дальше все так же, как и раньше с fileReference.getMetadata... 01.12.2017
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..