原因:开发项目时有时遇到下载可能会需要提示文件大小,如果后台没有返回,就需要APP端主动获取,一般在请求接口时请求头中会有返回,资源大小。
#import <Foundation/Foundation.h>
/**
* @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