С помощью UIImagePickerController мы можем получить доступ и загрузить изображения. Как получить доступ и загрузить документы с iphone?

Я разрабатываю приложение, связанное с кредитом, в котором пользователь загружает свои документы, такие как платежные ведомости, возвратные документы и т. Д. Для этого я должен показать пользователю все документы, которые он / она имеет на своем iPhone. Как показать сборщик для документов?

3 ответа

Решение

UIDocumentPickerViewController это то, что вы ищете.

Вы инициируете один со списком типов документов, которые вы хотите иметь возможность выбрать, и режим, который обычно .open получить доступ к файлу в облачном провайдере напрямую. Вы также можете использовать .import который скопирует файл в ваш контейнер, а не предоставит вам доступ к файлу непосредственно в контейнере провайдера облака, если целью является просто загрузить его (вы можете удалить копию после загрузки).

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

Ознакомьтесь с примером кода Particles и сессией WWDC этого года " Управление документами в приложениях iOS "

Просто вызовите метод openDocumentPicker, когда вы хотите загрузить документ в приложение.

import MobileCoreServices  

 func openDocumentPicker() {
        let importMenu = UIDocumentMenuViewController(documentTypes: [kUTTypePDF as String], in: .import)
        importMenu.delegate = self
        self.present(importMenu, animated: true, completion: nil)
    }

создайте свое расширение viewcontroller

extension ViewController: UIDocumentMenuDelegate {
    func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
        documentPicker.delegate = self
        present(documentPicker, animated: true, completion: nil)
    }

    func documentMenuWasCancelled(_ documentMenu: UIDocumentMenuViewController) {
        print("we cancelled")
        dismiss(animated: true, completion: nil)
    }
}

extension ViewController: UIDocumentPickerDelegate {
    internal func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
        do {

let fileAttributes = try FileManager.default.attributesOfItem(atPath: url.path)
            let fileSizeNumber = fileAttributes[FileAttributeKey.size] as! NSNumber
            let fileSizea = fileSizeNumber.doubleValue
            let fileSize = fileSizea/1000000.0

            if fileSize > 5.0 {
                appDelegate.displayAlert(Title: "", Message: "Selected File are too big,Please select file less than 5.0 mb")
            } else {
 let documentData = try Data(contentsOf: url, options: .dataReadingMapped)
 }
        } catch let error {
            print(error.localizedDescription)
        }
    }
}

выше этого кода только вы можете получить доступ к PDF, если вы хотите получить доступ к другому документу, чем просто использовать этот код

/*
        let pdf                                 = String(kUTTypePDF)
        let spreadsheet                         = String(kUTTypeSpreadsheet)
        let movie                               = String(kUTTypeMovie)
        let aviMovie                            = String(kUTTypeAVIMovie)
        let docs                                = String(kUTTypeCompositeContent)
        let img                                 = String(kUTTypeImage)
        let png                                 = String(kUTTypePNG)
        let jpeg                                = String(kUTTypeJPEG)
        let txt                                 = String(kUTTypeText)
        let zip                                 = String(kUTTypeZipArchive)
        let msg1                                = String(kUTTypeEmailMessage)
        let msg2                                = String(kUTTypeMessage)
        let types                               = [pdf, spreadsheet, movie, aviMovie, img, png, jpeg, txt, docs, zip, msg1, msg2]
 */

iOS 11 или более поздняя версия

let importMenu = UIDocumentPickerViewController.init(documentTypes: ["public.item"], in: UIDocumentPickerMode.import)
  self.present(importMenu, animated: true) {

 } 

Пожалуйста, перейдите по следующей ссылке для более подробного описания https://www.techotopia.com/index.php/An_iOS_Document_Browser_Tutorial

iOS 10 или более ранняя версия Вы можете написать следующую функцию, когда откроется окно выбора документов. это будет работать для всех типов файлов, которые вы хотите загрузить.

   func openDocumentPicker() {

        let importMenu = UIDocumentMenuViewController(documentTypes: ["public.item"], in: .import)
        importMenu.delegate = self
        importMenu.modalPresentationStyle = .formSheet
            self.present(importMenu, animated: true, completion: nil)
    }
Другие вопросы по тегам