[Swift通天遁地]4、网络和线程-(9)上传图片并实时显示上传进度

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(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 }
相关文章
相关标签/搜索