快速下载文件后出现奇怪的错误

安德鲁

我正在尝试从远程服务器下载文件。文件可用,下载也完成。我从collectionview发送带有文件的文件名给这个函数,所以名字是正确的。但是我在保存文件时遇到了一些问题。这是我的文件加载方式:

func testLoad(attachName:String) {
        let documentsUrl:URL =  (FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first as URL?)!
        let destinationFileUrl = documentsUrl.appendingPathComponent(attachName)
        
        
        var request = URLRequest(url: Pathes.init(endpoint: "message/\(mModel?.id ?? -1)/attachment/\(attachName)?type=\(mType ?? -1)").resourseUrl)
        
        request.setValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
        request.setValue("Bearer " + UserDefaults.standard.string(forKey: "access_token")!, forHTTPHeaderField: "Authorization")
        
        let task = URLSession(configuration: URLSessionConfiguration.default).downloadTask(with: request) { (tempLocalUrl, response, error) in
            if let tempLocalUrl = tempLocalUrl, error == nil {
                
                print("\(tempLocalUrl) ---> \(destinationFileUrl)")
                
                if ((response as? HTTPURLResponse)?.statusCode) != nil {
                    do {
                        try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
                    } catch (let writeError) {
                        print("Error creating a file \(destinationFileUrl) : \(writeError)")
                    }
                }
                
            } else {
                print("Error took place while downloading a file. Error description: %@", error?.localizedDescription);
            }
        }
        task.resume()
        
    }

在下面,您可以看到我的错误:

Error creating a file file:///Users/angor/Library/Developer/CoreSimulator/Devices/B83E640A-8EC4-475A-B272-5D884B611A8B/data/Containers/Data/Application/3DE475CE-B2B3-4971-9382-1F272160B1A4/Downloads/paolo-nicolello-dqy5wtCdS4U-unsplash.jpg : Error Domain=NSCocoaErrorDomain Code=516 "“CFNetworkDownload_mw7QwY.tmp” couldn’t be copied to “Downloads” because an item with the same name already exists." UserInfo={NSSourceFilePathErrorKey=/Users/angor/Library/Developer/CoreSimulator/Devices/B83E640A-8EC4-475A-B272-5D884B611A8B/data/Containers/Data/Application/3DE475CE-B2B3-4971-9382-1F272160B1A4/tmp/CFNetworkDownload_mw7QwY.tmp, NSUserStringVariant=(
    Copy
), NSDestinationFilePath=/Users/angor/Library/Developer/CoreSimulator/Devices/B83E640A-8EC4-475A-B272-5D884B611A8B/data/Containers/Data/Application/3DE475CE-B2B3-4971-9382-1F272160B1A4/Downloads/paolo-nicolello-dqy5wtCdS4U-unsplash.jpg, NSFilePath=/Users/angor/Library/Developer/CoreSimulator/Devices/B83E640A-8EC4-475A-B272-5D884B611A8B/data/Containers/Data/Application/3DE475CE-B2B3-4971-9382-1F272160B1A4/tmp/CFNetworkDownload_mw7QwY.tmp, NSUnderlyingError=0x60000232c150 {Error Domain=NSPOSIXErrorDomain Code=17 "File exists"}}

我不明白为什么会这样。该错误表明我的文件存在,但是我的Downloads目录中没有看到任何新文件我认为问题与必须复制到的临时文件有关Downloads我在这里发现了这种文件下载方式,也许我做错了?

安德鲁

我设法找出问题所在:)我添加了从tmp文件夹中删除临时创建的文件,并将所有文件下载代码移至扩展名:

extension UIViewController:URLSessionDownloadDelegate{
    public func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
        guard let url = downloadTask.originalRequest?.url else { return }
        let documentsPath = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)[0]
        let destinationURL = documentsPath.appendingPathComponent(url.lastPathComponent)
       
        try? FileManager.default.removeItem(at: destinationURL)
        
        do {
            try FileManager.default.copyItem(at: location, to: destinationURL)
            
        } catch let error {
            print("Copy Error: \(error.localizedDescription)")
        }
    }
}

也许它将帮助我以外的其他人:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

下载文件时出现NotSupportedException

来自分类Dev

尝试从数据库下载文件时出现未分配的局部变量错误

来自分类Dev

从Flask下载文件后将其删除

来自分类Dev

如何快速下载文件?

来自分类Dev

从1.1升级到1.2后出现奇怪的快速错误

来自分类Dev

使用Java下载文件,没有api,奇怪的错误

来自分类Dev

访问网站后强制下载文件

来自分类Dev

从https URL下载文件时出现WebClient错误

来自分类Dev

为什么下载文件时出现错误“错误[ERR_STREAM_WRITE_AFTER_END]:写完”?

来自分类Dev

在Kaggle中下载文件时出现-“失败:名称解析暂时失败”错误

来自分类Dev

下载文件页面出现NoReverseMatch错误

来自分类Dev

通过C#代码下载文件时出现错误文件

来自分类Dev

使用Selenium Python下载文件时出现“失败-下载错误”

来自分类Dev

使用Google Picker API后尝试下载文件时出现错误401

来自分类Dev

下载文件后如何启动活动?

来自分类Dev

PHP文件下载奇怪的错误

来自分类Dev

从Android中的FTP下载文件时出现只读文件系统错误

来自分类Dev

打开文件后出现奇怪的段错误?

来自分类Dev

从url下载文件后刷新图库

来自分类Dev

下载文件时出现IE8错误

来自分类Dev

从Sharepoint Rest API下载文件时出现400错误

来自分类Dev

下载文件后如何通知?

来自分类Dev

无法下载文件,不断出现此错误错误404:找不到

来自分类Dev

从FTP下载文件的奇怪字符

来自分类Dev

VSFTPD上传后无法下载文件

来自分类Dev

启动后自动下载文件

来自分类Dev

从Google Chrome下载文件时出现网络错误失败

来自分类Dev

POST 请求后的 Angular 下载文件

来自分类Dev

下载文件但出现权限错误

Related 相关文章

热门标签

归档