在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 本文将演示上传图片至服务器,并实时显示上传的进度。 首先确保在项目中已经安装了所需的第三方库。 点击【Podfile】,查看安装配置文件。 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】 现在开始编写代码,实现图片上传的功能。 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 }
|
请发表评论