使用 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 保存具有不同名称的文件的主要内容,如果未能解决你的问题,请参考以下文章