1. 程式人生 > >[Xcode10 實際操作]八、網路與多執行緒-(17)使用網址會話物件URLSession向遠端伺服器上傳圖片

[Xcode10 實際操作]八、網路與多執行緒-(17)使用網址會話物件URLSession向遠端伺服器上傳圖片

本文將演示如何通過網址會話物件URLSession向遠端伺服器上傳圖片。

網址會話物件URLSession具有在後臺上傳和下載、暫停和恢復網路操作、豐富的代理模式等優點。

在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】

 1 import UIKit
 2 
 3 class ViewController: UIViewController {
 4     
 5     override func viewDidLoad() {
 6         super.viewDidLoad()
 7         // Do any additional setup after loading the view, typically from a nib.
8 9 //建立一個網址物件,作為上傳圖片的介面地址 10 let url = URL(string: "https://www.cnblogs.com/strengthen/yourUploadingURL") 11 //建立一個網路請求物件 12 let request = URLRequest(url: url!) 13 //網址會話URLSession在2013年釋出,蘋果對它的定位是作為舊的網路請求介面的替代者。 14 //這裡獲得網址會話的單例物件 15 let session = URLSession.shared
16 17 //建立一個字串,作為等待上傳的圖片路徑 18 let image = NSHomeDirectory() + "/Documents/yourImage.png" 19 //將圖片內容轉換為二進位制資料 20 let imageData = try? Data(contentsOf: URL(fileURLWithPath: image)) 21 22 //網址會話單例物件提供了三種類型的網路請求服務。 23 //1.資料任務 24 //2.上傳任務
25 //3.下載任務 26 //此處建立一個上傳任務的網路請求 27 let task = session.uploadTask(with: request, 28 from: imageData, 29 completionHandler: {(NSData, response:URLResponse?, error:Error?) -> Void in 30 //上傳結束之後,判斷錯誤資訊是否存在, 31 //在控制檯輸出日誌資訊。 32 print("Uploading Finished") 33 }) 34 35 //任務建立後,呼叫resume方法開始工作。 36 task.resume() 37 } 38 39 override func didReceiveMemoryWarning() { 40 super.didReceiveMemoryWarning() 41 // Dispose of any resources that can be recreated. 42 } 43 }