★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-xzltzogk-kw.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftios
本文將演示上傳圖片至服務器,並實時顯示上傳的進度。git
首先確保在項目中已經安裝了所需的第三方庫。github
點擊【Podfile】,查看安裝配置文件。swift
1 source 'https://github.com/CocoaPods/Specs.git' 2 platform :ios, '12.0' 3 use_frameworks! 4 5 target ‘DemoApp’ do 6 pod 'Alamofire', '~> 4.0' 7 end
根據配置文件中的相關配置,安裝第三方庫。服務器
而後點擊打開【DemoApp.xcworkspace】項目文件。微信
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】網絡
如今開始編寫代碼,實現圖片上傳的功能。iphone
1 import UIKit 2 //在當前的類文件中,引入已經安裝的第三方類庫 3 import Alamofire 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 //簡單的圖片上傳功能 11 simpleUpload() 12 13 //實時顯示上傳進度的圖片上傳功能 14 complexUpload() 15 } 16 17 //添加一個方法,首先實現一個簡單的上傳動做 18 func simpleUpload() 19 { 20 //得到項目中圖片所在的路徑 21 let fileURL = Bundle.main.url(forResource: "iphone_large_2x", withExtension: "jpg") 22 //調用網絡操做庫的上傳方法,將指定位置的圖片文件,上傳到服務器接口。 23 Alamofire.upload(fileURL!,to:"https://httpbin.org/post") 24 .validate() 25 .responseJSON { response in 26 //上傳完成以後,返回主線程,彈出上傳結束的提示信息 27 DispatchQueue.main.async{ 28 //得到服務器返回對象的結果信息 29 let message = "Result:\(response.result)" 30 31 //建立一個警告窗口,並設置彈出窗口的標題、信息和樣式等屬性 32 let alert = UIAlertController(title: "Information", //標題 33 message: message, //信息 34 preferredStyle: UIAlertControllerStyle.alert)//樣式 35 //初始化一個警告動做的按鈕控件,當點擊該按鈕時,關閉彈出窗口。 36 let OKAction = UIAlertAction(title: "OK", 37 style: UIAlertActionStyle.default, 38 handler: nil) 39 //將警告動做添加到窗口中, 40 alert.addAction(OKAction) 41 //而後彈出警告窗口 42 self.present(alert, animated: true, completion: nil) 43 } 44 } 45 } 46 47 //添加一個方法, 48 //實現一個可實時顯示上傳進度的圖片上傳功能 49 func complexUpload() 50 { 51 //得到項目中圖片所在的路徑 52 let fileURL = Bundle.main.url(forResource: "iphone_large_2x", withExtension: "jpg") 53 //調用網絡操做庫的上傳方法,將指定位置的圖片文件,上傳到服務器接口。 54 Alamofire.upload(fileURL!,to:"https://httpbin.org/post") 55 //在上傳進度的方法中,處理返回的進度信息 56 .uploadProgress { progress in 57 58 //在控制檯輸出:上傳進度的完成比例 59 print("---fractionCompleted:\(progress.fractionCompleted)") 60 //在控制檯輸出:已經上傳的字節數 61 print("---completedUnitCount:\(progress.completedUnitCount)") 62 //在控制檯輸出:總的字節數 63 print("---totalUnitCount:\(progress.totalUnitCount)") 64 } 65 //調用驗證方法,驗證上傳的任務 66 .validate() 67 //處理上傳結束後,服務器返回的數據 68 .responseJSON { response in 69 //上傳完成以後,返回主線程,彈出上傳結束的提示信息 70 DispatchQueue.main.async{ 71 //在控制檯輸出:服務器返回對象的結果信息 72 print("---Result:\(response.result)") 73 //得到服務器返回對象的結果信息 74 let message = "Result:\(response.result)" 75 76 //建立一個警告窗口,並設置彈出窗口的標題、信息和樣式等屬性 77 let alert = UIAlertController(title: "Information", //標題 78 message: message,//信息 79 preferredStyle: UIAlertControllerStyle.alert)//樣式 80 //初始化一個警告動做的按鈕控件,當點擊該按鈕時,關閉彈出窗口。 81 let OKAction = UIAlertAction(title: "OK", 82 style: UIAlertActionStyle.default, 83 handler: nil) 84 //將警告窗口添加到窗口中 85 alert.addAction(OKAction) 86 //而後彈出警告窗口 87 self.present(alert, animated: true, completion: nil) 88 } 89 } 90 } 91 92 93 override func didReceiveMemoryWarning() { 94 super.didReceiveMemoryWarning() 95 // Dispose of any resources that can be recreated. 96 } 97 }