swift upload

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 }
原文地址:https://www.cnblogs.com/dosu/p/12577066.html