使用 Swift 保存具有不同名称的文件

Posted

技术标签:

【中文标题】使用 Swift 保存具有不同名称的文件【英文标题】:Save file with different name using Swift 【发布时间】:2017-05-05 06:58:17 【问题描述】:

我正在使用 Alamofire 从服务器下载文件。但我想给它起不同的名字,就像我们从网上下载文件的方式一样,可以随意命名,同样的,在swift中怎么可能

我正在使用以下代码:-

Alamofire.download(fileUrl, to: destination)
        .downloadProgress  progress in
            print("Download Progress:---------- \   
        (progress.fractionCompleted)")


        
        .responseData  response in

            print(response.request)
            print(response.response)
            print(response.temporaryURL)
            print(response.destinationURL)
            print(response.error)

    

不希望使用 alamofire 重命名或覆盖文件。有没有其他方法

【问题讨论】:

你想用你的自定义名称将下载的数据保存到应用的文档目录吗? 是的,我想在文档目录中保存不同名称的文件 请看我的回答。如果您在这方面遇到任何问题,请告诉我。 【参考方案1】:

这是使用您提供的名称将Data 保存到 DocumentDirectory 的动手功能。该方法有一个call back,它会在执行保存操作后调用,它会返回图像保存在目录中的路径。这个函数写在Swift 3.

func saveImageInDocDirectory(data: Data?, fileName: String?, successblock: @escaping (_ path: String?) -> Void)  // To add the image to cache for given identifier.

    let paths = NSSearchPathForDirectoriesInDomains( .documentDirectory, .userDomainMask, true)[0] as String
    let path = paths.appending("/\(fileName!)")
    if !FileManager.default.fileExists(atPath: path) 
        do 
            try FileManager.default.createDirectory(at: URL(fileURLWithPath: path), withIntermediateDirectories: false, attributes: nil)
         catch 
            print("Error creating images folder in Cache dir: \(error)")
        
    

    if (filemgr.fileExists(atPath: path)) 
        try! filemgr.removeItem(atPath: path)
     else 
        do 
            try data?.write(to: URL(fileURLWithPath: path, isDirectory: false))
            successblock(path)
         catch 
            successblock(nil)
            print("Error while caching the data in cache folder.")
        
    


你可以像这样调用这个方法,

Alamofire.download(fileUrl, to: destination)
    .downloadProgress  progress in
        print("Download Progress:---------- \   
    (progress.fractionCompleted)")


    
    .responseData  response in

        print(response.request)
        print(response.response)
        print(response.temporaryURL)
        print(response.destinationURL)
        print(response.error)
       if let data = response.result.value 
         self.saveImageInDocDirectory(data: data, fileName: "YourFile",  successblock:  (path) in

                print(path)

            
       


谢谢。

【讨论】:

感谢您的帮助!但我正在使用 Alamofire 根据要求下载内容。 我也在使用 alamofire 下载数据。请查看我的更新答案。

以上是关于使用 Swift 保存具有不同名称的文件的主要内容,如果未能解决你的问题,请参考以下文章

在具有不同变量名称的循环中保存

如何在 iOS/Swift 2 上使用 PHPhotoLibrary 保存具有自定义文件名的照片?

保存具有不同名称的访问报告

在 Swift 中使用具有不同数据类型的数组

使用 Swift 将照片保存到图库中的文件夹

Swift 3.0 图像集