当前位置: 首页 > 面试题库 >

如何快速下载文件?

詹斌蔚
2023-03-14
问题内容

我刚刚开始学习来自Android的iOS的Apple Swift编程。我现在基本上可以阅读和操作swift代码,还学习了iOS
swift编程中使用的一些通用类,但是仍然对语法和所有内容感到困惑。

我正在尝试下载文件。就像,让我们说来自这个网址

var url = "http://www.mywebsite.com/myfile.pdf"

在一个按钮中单击。也许也有视觉进步

通过在stackoverflow中搜索,我偶然发现了Alamofire。我可以尝试一下,但是我不确定这是否是最好的方法。

因此,我想问一下实现目标的方式和方式(iOS7和iOS8)是什么。此外,利弊也很棒!


问题答案:

没有Alamofire的示例下载程序类:

class Downloader {
    class func load(URL: NSURL) {
        let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: sessionConfig, delegate: nil, delegateQueue: nil)
        let request = NSMutableURLRequest(URL: URL)
        request.HTTPMethod = "GET"
        let task = session.dataTaskWithRequest(request, completionHandler: { (data: NSData!, response: NSURLResponse!, error: NSError!) -> Void in
            if (error == nil) {
                // Success
                let statusCode = (response as NSHTTPURLResponse).statusCode
                println("Success: \(statusCode)")

                // This is your file-variable:
                // data
            }
            else {
                // Failure
                println("Failure: %@", error.localizedDescription);
            }
        })
        task.resume()
    }
}

这是在您自己的代码中使用它的方法:

class Foo {
    func bar() {
        if var URL = NSURL(string: "http://www.mywebsite.com/myfile.pdf") {
            Downloader.load(URL)
        }
    }
}

Swift 3版本

另请注意,将大文件下载到磁盘上,而不是在内存中。参见`downloadTask:

class Downloader {
    class func load(url: URL, to localUrl: URL, completion: @escaping () -> ()) {
        let sessionConfig = URLSessionConfiguration.default
        let session = URLSession(configuration: sessionConfig)
        let request = try! URLRequest(url: url, method: .get)

        let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
            if let tempLocalUrl = tempLocalUrl, error == nil {
                // Success
                if let statusCode = (response as? HTTPURLResponse)?.statusCode {
                    print("Success: \(statusCode)")
                }

                do {
                    try FileManager.default.copyItem(at: tempLocalUrl, to: localUrl)
                    completion()
                } catch (let writeError) {
                    print("error writing file \(localUrl) : \(writeError)")
                }

            } else {
                print("Failure: %@", error?.localizedDescription);
            }
        }
        task.resume()
    }
}


 类似资料:
  • 本文向大家介绍linux下如何实现快速拷贝大文件,包括了linux下如何实现快速拷贝大文件的使用技巧和注意事项,需要的朋友参考一下 拷贝数据 远程拷贝数据的时候,我们一般使用rsync命令,但是如果拷贝大量的小文件,会导致rsync的传输速度慢。使用tar pv lz4打包压缩传输,可以解决这问题,使用这个方法,等同于使用scp、rsync传输大文件。 实测,使用rsync传输1200G,单个文件

  • 问题内容: 我正在尝试从网站获取JSON并进行解析,然后再将其放入iOS视图中。 这是我的代码; 这是JSON的链接; 我在这里做错了什么? 问题答案: 这两个功能对我有用:

  • 问题内容: 我正在导入一个 长为1700万数字 的大型文本文件,并且正在使用以下代码: 它会立即加载文件并打印出来,但是要花费很长时间(大约一个小时)才能将转换为,我可以做些什么来加快速度并快速加载数字吗? 问题答案: 作为一种优化,因为是,你可以把它保存到一个 二进制文件 一次,并且加速您的装载增色不少。 加载序列化的对象应该比每次解析一个巨大的字符串都要 快 。 使用以节省你的大整数读回。

  • 问题内容: 我有一个JSON文件,想解析和使用表视图中的对象列表。任何人都可以共享代码以快速解析JSON文件。 问题答案: 再简单不过了: 话虽如此,我强烈建议您使用 Swift 4中引入的Codable API 。

  • 问题内容: 这个问题已经在这里有了答案 : 如何在Python中复制文件? (17个答案) 5年前关闭。 使用Windows File Explorer或Mac’s Finder将文件复制到常规右键单击复制>右键单击粘贴的时间至少要长3倍。有没有比Python更快的替代方法?可以采取什么措施来加快文件复制过程?(文件目标位于网络驱动器上……如果有任何区别……)。 编辑后: 这是我最终得到的结果:

  • 我正在开发一个应用程序(为Android和iPhone)。实际上,在我的应用程序中,我必须在后台下载很多视频(使用后台服务,IntentService),以及我有一个屏幕显示下载的进度(使用一个活动,有UI显示下载进度)。但我不知道为什么下载速度比iPhone中的相同应用程序的下载速度要慢得多。 此外,每次下载视频后,我会在数据库中标记该视频为下载。所有视频都会发生这种情况。 数据库调用是Andr