swift - 如何使用 Alamofire 从 URL 下载文件到自定义文件夹

标签 swift file download alamofire

enter image description here我正在使用 Alamofire 从 url 下载文件,我正在获取文件路径,但我无法找到该文件路径

let mjString = "https://wallpaperstock.net/wallpapers/thumbs1/42535.jpg" 
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]

    print("destinationURLForFile ***********    \(documentsURL)")
    let fileURL = documentsURL.appendingPathComponent("42535.jpg")
    return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
}

Alamofire.download(mjString, to: destination).response { response in
    //            print(response)

    if response.error == nil, let imagePath = response.destinationURL?.path {
        let image = UIImage(contentsOfFile: imagePath)
        self.mjImage.image = image
        print("imagePath   =     \(imagePath)")
    }
}
file:///var/mobile/Containers/Data/Application/4CE55219-8244-4021-B113-1BB00B8F5B10/Documents/42535.jpg

如果可能的话,我希望将该文件保存到自定义文件夹中。任何帮助将不胜感激。

我得到的输出是,

file:///var/mobile/Containers/Data/Application/4CE55219-8244-4021-B113-1BB00B8F5B10/Documents/42535.jpg

最佳答案

Append Path Component

只是简单的改变

let fileURL = documentsURL.appendingPathComponent("42535.jpg")

let fileURL = documentsURL.appendingPathComponent("/yourFolder/42535.jpg")

编辑

您可以使用此函数加载此图像:

func loadImageFromDocumentDirectory(nameOfImage : String, folder: String) -> UIImage {
        let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
        let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
        let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
        if let dirPath = paths.first{
            let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent("\(folder)/\(nameOfImage)")
            if FileManager.default.fileExists(atPath: (imageURL.path)) {
                if let image    = UIImage(contentsOfFile: imageURL.path) {
                    return image
                }

            }
        }
        //Load default image if img doesnt exist. 
        return UIImage.init(named: "something.jpg")!
    }

只需像这样简单地使用它:

imageView.image = loadImageFromDocumentDirectory(nameOfImage : "42535.jpg", folder: "yourFolder")

关于swift - 如何使用 Alamofire 从 URL 下载文件到自定义文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56883414/

相关文章:

Java 支持从大于 `Int.MAX_VALUE` 的 URL 下载数据 (Url.openConnection())

ios - Crashlytics iOS - 在第 0 行崩溃 - Swift 来源

Java - 在持久性媒体中存储整数的快速方法

ios - 边界功能不会阻止 Sprite 离开

Python:找不到 os.listdir 文件

c# - FileInfo.MoveTo 不更新 FileInfo.Exists

java - 下载 .torrent 文件 Java

css - 从实现中仅获取页脚 css

Swift -- 如何创建 UIAlertView 按钮点击或响应

swift - UITextview 上的 RxSwift