FileMyShareListViewController.swift 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //
  2. // FileMyShareListViewController.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/9/27.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import AlamofireImage
  11. import AlamofireObjectMapper
  12. import SwiftyJSON
  13. import ObjectMapper
  14. import QuickLook
  15. import CocoaLumberjack
  16. class FileMyShareListViewController: UIViewController {
  17. @IBOutlet weak var tableView: UITableView!
  18. var myFileURL:String?{
  19. didSet {
  20. fileURL = myFileURL
  21. }
  22. }
  23. var fileURL:String?
  24. var myFiles = [OOFile]()
  25. //预览
  26. let quickLookController = QLPreviewController()
  27. var localFileURL = [URL]()
  28. override func viewDidLoad() {
  29. super.viewDidLoad()
  30. self.tableView.delegate = self
  31. self.tableView.dataSource = self
  32. self.tableView.mj_header = MJRefreshNormalHeader(refreshingBlock: {
  33. self.loadMyFiles()
  34. })
  35. self.loadMyFiles()
  36. quickLookController.delegate = self
  37. quickLookController.dataSource = self
  38. }
  39. override func didReceiveMemoryWarning() {
  40. super.didReceiveMemoryWarning()
  41. // Dispose of any resources that can be recreated.
  42. }
  43. func loadMyFiles(){
  44. self.myFiles.removeAll()
  45. self.showLoading(title: "加载中...")
  46. AF.request(fileURL!).responseArray(keyPath: "data", context: nil) { (resp:AFDataResponse<[OOFile]>) in
  47. switch resp.result {
  48. case .success(let files):
  49. self.myFiles.append(contentsOf: files)
  50. self.tableView.reloadData()
  51. self.showSuccess(title: "加载完成")
  52. case .failure(let err):
  53. DDLogError(err.localizedDescription)
  54. self.tableView.reloadData()
  55. self.showError(title: "加载失败")
  56. }
  57. if self.tableView.mj_header.isRefreshing(){
  58. self.tableView.mj_header.endRefreshing()
  59. }
  60. }
  61. }
  62. }
  63. extension FileMyShareListViewController:UITableViewDelegate,UITableViewDataSource{
  64. func numberOfSections(in tableView: UITableView) -> Int {
  65. return 1
  66. }
  67. func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  68. return myFiles.count
  69. }
  70. func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  71. let cell = tableView.dequeueReusableCell(withIdentifier: "FileTableViewCell", for: indexPath) as! FileTableViewCell
  72. let file = self.myFiles[(indexPath as NSIndexPath).row]
  73. cell.file = file
  74. return cell
  75. }
  76. func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  77. let file = self.myFiles[(indexPath as NSIndexPath).row]
  78. self.downloadSelectFile(file)
  79. }
  80. func downloadSelectFile(_ f:OOFile){
  81. let url = AppDelegate.o2Collect.generateURLWithAppContextKey(FileContext.fileContextKey, query: FileContext.fileDownloadItemIdQuery, parameter: ["##id##":f.id! as AnyObject])
  82. var fileLocalURL:URL?
  83. let destination:DownloadRequest.Destination = { temporaryURL, response in
  84. let baseURL = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)[0]
  85. let folder = URL(fileURLWithPath:baseURL).appendingPathComponent("tmpFile", isDirectory: true)
  86. //判断文件夹是否存在,不存在则创建
  87. let exist = FileManager.default.fileExists(atPath: folder.path)
  88. if !exist {
  89. try! FileManager.default.createDirectory(at: folder, withIntermediateDirectories: true,
  90. attributes: nil)
  91. }
  92. //增加随机数
  93. let preName = f.name?.components(separatedBy: ".").first!
  94. let extName = f.name?.components(separatedBy: ".").last!
  95. let timestamp = Date().timeIntervalSince1970.description
  96. fileLocalURL = folder.appendingPathComponent("\(preName!)_\(timestamp).\(extName!)")
  97. return (fileLocalURL!,[.removePreviousFile, .createIntermediateDirectories])
  98. }
  99. self.showLoading(title: "下载中..")
  100. AF.download(url!, to: destination).downloadProgress { (progress) in
  101. if progress.completedUnitCount == progress.totalUnitCount {
  102. self.hideLoading()
  103. }
  104. }.responseData { resp in
  105. switch resp.result{
  106. case .success(_):
  107. self.localFileURL.removeAll(keepingCapacity: true)
  108. if QLPreviewController.canPreview(fileLocalURL! as QLPreviewItem){
  109. self.localFileURL.append(fileLocalURL!)
  110. self.quickLookController.reloadData()
  111. self.quickLookController.currentPreviewItemIndex = 0
  112. self.navigationController?.pushViewController(self.quickLookController, animated: true)
  113. }
  114. case .failure(let err):
  115. DDLogError(err.localizedDescription)
  116. }
  117. }
  118. }
  119. // { (request, response, data, error) in
  120. // if let err = error {
  121. // DDLogError(err.localizedDescription)
  122. // }else{
  123. // ProgressHUD.dismiss()
  124. // self.localFileURL.removeAll()
  125. // if QLPreviewController.canPreview(fileLocalURL!){
  126. // self.localFileURL.append(fileLocalURL!)
  127. // self.quickLookController.reloadData()
  128. // self.quickLookController.currentPreviewItemIndex = 0
  129. // self.navigationController?.pushViewController(self.quickLookController, animated: true)
  130. // }
  131. // }
  132. // }
  133. //
  134. //
  135. // }
  136. }
  137. extension FileMyShareListViewController:QLPreviewControllerDataSource,QLPreviewControllerDelegate{
  138. func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
  139. return self.localFileURL.count
  140. }
  141. func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
  142. return self.localFileURL[index] as QLPreviewItem
  143. }
  144. }