iOS-通过url获取文件、图片的文件大小

原因:开发项目时有时遇到下载可能会需要提示文件大小,如果后台没有返回,就需要APP端主动获取,一般在请求接口时请求头中会有返回,资源大小。

#import 

/**
 *  @brief 通过网络url获得文件的大小
 */
@interface CdURLFileSize : NSObject

typedef void(^SizeBlock)(NSString *size);

/**
 通过连接获取文件大小

 @param URL 链接
 @param fileSize 文件大小
 */
+ (void)URLFileSizeWidthURL:(NSString *)URL
                   fileSize:(SizeBlock)fileSize;


@end
#import "CdURLFileSize.h"

@implementation CdURLFileSize

+ (void)URLFileSizeWidthURL:(NSString *)URL fileSize:(SizeBlock)fileSize{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager GET:URL parameters:@{} progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
    }failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        NSDictionary *dic = [(NSHTTPURLResponse *)task.response allHeaderFields];
        CGFloat length = [[dic objectForKey:@"Content-Length"] floatValue];// Content-Length单位是byte,除以1024后是KB
        NSString *size;
        if (length >= 1048576) {//1048576bt = 1M  小于1m的显示KB 大于1m显示M
            size = [NSString stringWithFormat:@"%.2fM",length/1024/1024];
        }else{
            size = [NSString stringWithFormat:@"%.1fKB",length/1024];
        }
        if (fileSize) {
            fileSize(size);
        }
    }];
}


@end


你可能感兴趣的:(iOS-通过url获取文件、图片的文件大小)