У меня есть ссылка на хранилище Firebase для документа, который я хочу загрузить в каталог Document моего устройства ios, а затем просмотреть его с помощью модуля QuickLook.Я могу загрузить документ на устройстве iOS, но он не сохраняется под именем, которое я предоставляю.Я хочу создать следующую структуру каталогов, а затем нужно сохранить документ в папке "doc".Documents / chat / doc
следующий код предназначен для создания "/ chat / doc" внутри директории документов Iphone.Где folderName
будет содержать "/chat/doc".
func createDocument(folderName: String ,completion: @escaping(Bool,String)->()){
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
if let documentsDirectory = path{
//
let docDirectoryPath = documentsDirectory.appending(folderName)
let fileManager = FileManager.default
if !fileManager.fileExists(atPath: docDirectoryPath) {
do {
try fileManager.createDirectory(atPath: docDirectoryPath,
withIntermediateDirectories: true,
attributes: nil)
//return path on success
completion(true,docDirectoryPath)
return
} catch {
print("Error creating folder in documents dir: \(error.localizedDescription)")
completion(false,error.localizedDescription)
return
}
}
completion(true,docDirectoryPath)
}
}
после создания папки, я хочу скачать документ и нужно сохранить во вновь созданной папке в каталоге документов.
Следующий кодбудет загружать документ.
func downloadDocument(){
createDocument(folderName: "/chat/doc") { (status, path) in
if let docURL = self.documentURL{
if status{
//folder is created now download document
let docDownloadRef = Storage.storage().reference(forURL: docURL)
//get documents metadata from firebase to get document name
docDownloadRef.getMetadata { metadata, error in
if let error = error {
// Uh-oh, an error occurred!
} else {
//get document name from metadata
if let fileName = metadata?.name{
//create file system url to store document
let docsurl = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
let myurl = docsurl.appendingPathComponent("chat/\(fileName)")
_ = docDownloadRef.write(toFile: myurl) { url, error in
if let error = error {
print(error.localizedDescription)
} else {
// Local file URL for document is returned
print("doc url \(url?.absoluteString)")
}
}
}
}
}
}else{
//folder is not created show document using online location
}
}
}
}
Ultimate goal is to achieve something like this "Documents/chat/doc/abc.doc"
, но мой код не хранит документ с использованием имени файла, он хранится как этот "Documents / chat / doc", где документ считается документом, а не папкой.
Пожалуйста, помогите, дайте мне знать, что я делаю неправильно.Спасибо.