Как загрузить файл PDF в firebase, который уже находится в памяти - PullRequest
0 голосов
/ 11 июля 2020

Я видел сообщения и читал документы о том, как загрузить файл с URL-адресом на локальный диск, однако я не могу найти ничего о том, как это сделать с файлом в памяти? Файл представляет собой массив PDF-файлов. Я так понимаю, у меня должна быть какая-то ссылка на этот файл. Где я мог бы указать URL-адрес PDF-файла в памяти? Кто-нибудь знает?

Изменить:

Я использовал этот код из Документов, однако я получаю следующую ошибку для putData: Тип выражения неоднозначен без дополнительного контекста Что, я думаю, означает конструктор не ожидает типа PDFDo c?

@IBAction func confirmUploadButtonTapped(_ sender: Any) {
        let uuid = UUID().uuidString
        // Create a root reference
        let storage = Storage.storage()
        
        // Create a storage reference from our storage service
        let storageRef = storage.reference()
        
        // Data in memory
        let data = Data()

        // Create a reference to the file you want to upload
        let pdfRef = storageRef.child("docRequest/" + uuid + "/" + ".pdf")

        // Upload the file to the path "images/rivers.jpg"
        let uploadTask = pdfRef.putData(pdfDocument, metadata: nil) { (metadata, error) in
          guard let metadata = metadata else {
            // Uh-oh, an error occurred!
            print(error)
            return
          }
          // Metadata contains file metadata such as size, content-type.
          let size = metadata.size
          // You can also access to download URL after upload.
          pdfRef.downloadURL { (url, error) in
            guard let downloadURL = url else {
              // Uh-oh, an error occurred!
                print(error)
              return
            }
          }
        }

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Эта строка является проблемой

let pdfRef = storageRef.child("docRequest/" + uuid + "/" + ".pdf")

, потому что она создаст путь

docRequest/xxxxx/.pdf

Поэтому вы должны использовать это

let pdfRef = storageRef.child("docRequest/" + uuid + ".pdf")

, когда будет путь

docRequest/xxxxx.pdf

Кроме того, убедитесь, что при записи этого файла в хранилище вы также сохранили URL-адрес в Firebase, чтобы к нему можно было перейти позже.

Что касается PDF в памяти, PDFKit (который, я думаю, вы используете) имеет функции для работы с этим, проверьте в рендерере pdfData (actions :) для создания объекта Data

0 голосов
/ 11 июля 2020

Если у вас уже есть данные для PDF-файла в памяти, вы можете загрузить эти данные в Firebase Storage, позвонив по номеру putData. См. Пример в документации по Загрузить из данных в памяти или по этому коду в проекте быстрого запуска Firebase .

...