12/08/2018, 18:15
Xử lý files trong Swift
1. Chọn files trong device 1.1 Chọn file Để chọn được files trong iOS bạn có thể dùng UIDocumentPickerViewController Ví dụ: import UIKit import MobileCoreServices // Bạn cần import MobileCoreServices vì kiểu dữ liệu của files (PDF, PNG, ....) được định nghĩa ở đây class ViewController: ...
1. Chọn files trong device
1.1 Chọn file
Để chọn được files trong iOS bạn có thể dùng UIDocumentPickerViewController
Ví dụ:
import UIKit import MobileCoreServices // Bạn cần import MobileCoreServices vì kiểu dữ liệu của files (PDF, PNG, ....) được định nghĩa ở đây class ViewController: UIViewController { func showFilePicker() { // kUTTypePDF là lọc files PDF, bạn có thể thêm nhiều kiểu dữ liệu khác nếu cần. let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypePDF as NSString as String], in: .import) documentPicker.delegate = self documentPicker.modalPresentationStyle = .formSheet if #available(iOS 11.0, *) { documentPicker.allowsMultipleSelection = false } self.present(documentPicker, animated: true, completion: nil) } } extension ViewController: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { print(url) } func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { print(urls) } func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { } }
1.2 Lấy kích thước của file
let size = sizeForLocalFilePath(filePath: url.path) func sizeForLocalFilePath(filePath: String) -> UInt64 { do { let fileAttributes = try FileManager.default.attributesOfItem(atPath: filePath) if let fileSize = fileAttributes[FileAttributeKey.size] { return (fileSize as! NSNumber).uint64Value } else { print("Failed to get a size attribute from path: (filePath)") } } catch { print("Failed to get file attributes for local path: (filePath) with error: (error)") } return 0 }
2. Mở file
Để mở 1 file bạn có thể dùng UIDocumentInteractionController. Bạn cần truyền vào file đã được download về device nhé, chứ files URL trỏ đến server thì không mở được đâu