1. 程式人生 > >AFHTTPSessionManager網路下載示例

AFHTTPSessionManager網路下載示例

// 執行下載檔案的方法,可以監控下載進度

- (void)downLoadAction

{

    [self.view addSubview:self.numberLabel];

// 1.建立網路管理者

AFHTTPSessionManager *manager = [AFHTTPSessionManagermanager];

// 2.目標地址

NSURL* url = [NSURLURLWithString:@"https://img-blog.csdn.net/20160520141230950?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"];

    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    __weak StartViewController* weakSelf = self;

    __block NSString* cachesBlockStr = nil;

    NSURLSessionDownloadTask *downTask = [manager downloadTaskWithRequest:request progress:^(NSProgress* progress){

//這裡監控下載進度

        [weakSelf updateProgress

:progress];

    } destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {

        NSLog(@"targetPath is %@",targetPath);

//下載的目標路徑

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

        cachesBlockStr = cachesPath;

        //path

        NSString *path = [cachesPath stringByAppendingPathComponent:response.suggestedFilename];

        return [NSURL fileURLWithPath:path];

    } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {

//檔案存在filePath下,可以讀出來放到其他檔案中,後續文章會介紹

    }];

// 3.啟動任務,resume雖說是重新開始或繼續的意思,但開始也呼叫這個函式

    [downTask resume];

}

//更新一個label,顯示百分比,label隨便放位置,或者換一個更好看的控制元件,這個隨意

-(void)updateProgress:(NSProgress*)progress{

    /*

     @property int64_t totalUnitCount;  需要下載檔案的總大小

     @property int64_t completedUnitCount; 當前已經下載的大小

     */

dispatch_async(dispatch_get_main_queue(), ^(void){

//Run UI Updates

CGFloat progressf = (CGFloat)progress.completedUnitCount/(CGFloat)(progress.totalUnitCount+1);

        _numberLabel.textColor = [UIColor whiteColor];

_numberLabel.backgroundColor = [UIColorcolorWithWhite:0.falpha:0.3];

        progressf = progressf*100;

        NSString* showStr = [NSString stringWithFormat:@"%0.f%c",progressf,'%'];

        _numberLabel.text = showStr;

    });

NSLog(@"%lld  %lld",progress.totalUnitCount,progress.completedUnitCount);

}


相關推薦

AFHTTPSessionManager網路下載示例

// 執行下載檔案的方法,可以監控下載進度 - (void)downLoadAction {     [self.view addSubview:self.numberLabel]; // 1.建立網路管理者 AFHTTPSessionManager *man

網絡多線線程下載示例

index exists extend reat multi xtend int main leo 網絡多線線程下載: IO流與多線程應用示例 1 import priv.gdw.utils.FileUtils; 2 import java.io.*; 3 i

VB.net 檔案下載示例

Imports System.IO Imports System.Net   Public Class Form1     Private Sub btnDown_Click(sender As Object, e As EventArgs) Handles btnDo

Unity的www網路下載類(以替換模型貼圖為例說明)

一、編寫給模型替換貼圖的指令碼 /*** * * Title: * 網路基礎 * * * Description: * 功能: * WWW 下載類的學習 * * Date: 20

(一)vmware虛擬機器配置網路/下載安裝mysql

(一)安裝vmware和centOS 下載VMware,我這裡下的是VMware.Workstation.14 下載centos虛擬機器,官網即可下載,我下的是CentOS-6.10-x86_64,64位的 先安裝VMware,安裝完:   點選 “建立新的虛

pdf 轉化image(網路下載的檔案或者本地檔案)

 需要jar包 pdfbox-2.0.12.jar, fontbox-2.0.12.jar package cn.zgjzd.app.util.zjl; import java.awt.image.BufferedImage; import java.io.Buffered

hyperledger中基本網路搭建示例

組織相關資訊 排序節點組織名:OrgOrder 排序節點組織ID:OrgOrderMSP 排序節點根域名:wilsoner.com 排序節點二級域名: orderer.wilsoner.com 組織名字,組織ID,組織MSP OrgOrder

Unity使用C#網路下載使用者頭像

Unity使用C#網路下載使用者頭像 封裝UnityEngine.WWW進行下載的類DownloadWWW .cs HTTP下載HttpManager.cs 其實每個人中都會遇到在專案下載使用者頭像,下面是專案中使用的網路下載

ExpandableListView的使用2:ExpandableListView+SQLite+Json解析+網路下載

上一篇文章講述了ExpandableListView的基本使用 案例2之下的複雜案例的實現: 基於網路,SQLite、json資料的ExpandableListView的實現 先了解幾個概念 Biz:(業務邏輯層) biz是Business的縮寫,實際上

網路爬蟲示例

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingExc

Centos7直接安裝mysql(空機器,沒有其他的什麼下載好的資源解壓等操作,直接網路通過網路下載

首先先確認你的機器是否有自帶的mysql rpm -qa | grep mysql 如果發現有,那麼將其解除安裝 rpm -e --nodeps 指定上一部出來的結果下面開始安裝 1. 下載mysql的repo源 $ wget http://repo.

iOS 之網路下載圖片

////網路下載圖片方法一://處理圖片url---下載圖片---儲存圖片到相簿//-(void)dealDownloadImageStr{//    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QU

Android——實現網路下載資源

網路許可權: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission and

網路下載檔案小程式(非原創,他人所寫)

#include <Windows.h> #include <iostream> #include <string> #include <vector> #include <algorithm> #include

Muduo 網路程式設計示例之八:用 Timing wheel 踢掉空閒連線

Muduo 網路程式設計示例之八:Timing wheel 踢掉空閒連線 陳碩 (giantchen_AT_gmail) 這是《Muduo 網路程式設計示例》系列的第八篇文章,原計劃講檔案傳輸,這裡插入一點計劃之外的內容。 本文介紹如何使用 timing wheel 來踢

基於Glib的網路實現示例

Glib簡介 Glib庫是C語言的好夥伴,整體設計的非常好! 但是,Glib的例子非常少. 不容易學習和借鑑. 這裡的例子就是採用glib的高層網路API實現的TCP服務端和客戶端. 以下例項都是正常執行的程式碼 TCP服務端程式碼例項: #

swift之網路下載圖片sdwebImage、Kingfisher

參考:https://www.jianshu.com/p/55bbfbdf78de =============方法一:使用sdwebImage 下載地址:https://github.com/rs/SDWebImage 在橋接檔案中匯入 #import <S

ios多執行緒操作(十二)—— 自定義NSOperation實現網路下載後回撥

- (void)main { @autoreleasepool { // 下載圖片的耗時操作 NSURL *url = [NSURL URLWithString:self.urlString]; NSData *data = [NSDa

簡單的封裝網路下載almofire(一)

     網路下載是作為一個iOS程式必須懂得的技術.雖然已經有大牛封裝非常好用的下載sdk,功能也非常強大,並且基本上你都不用怎麼在新增新的功能就可以直接使用.非常方便.    但是有個問題,如果我

SpringMVC和jQuery的Ajax簡單檔案上傳下載示例

準備工作:  前端引入:1、jquery,我在這裡用的是:jquery-1.10.2.min.js          2、ajaxfileupload.js  這裡可能會報一些錯,所以在json判斷那裡修改為(網上也有):  Js程式碼