Как найти размер файла перед загрузкой его в iOS 7?

Требуется найти размер файла на каком-либо сервере перед загрузкой его в iOS 7 … У меня есть метод NSURLConnectionDelegate, но он устарел после iOS 4.3

Вот этот метод:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

Вместо этого вы должны использовать NSURLConnectionDataDelegate Примечание : DATADelegate

и его метод didReceiveResponse: для отправки запроса HEAD для получения только заголовка:

 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; 

Затем вы можете получить размер ответа с предложением @ Port:

 long long size = [response expectedContentLength]; 

Сделайте запрос, используя метод HEAD. Например:

 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [request setHTTPMethod:@"HEAD"]; 

Этот запрос будет идентичен GET, но он не вернет тело. Затем позвоните

 long long size = [response expectedContentLength]; 

Полный пример с NSURLConnection (конечно же, работает и для NSURLSession):

 NSURL *URL = [NSURL URLWithString:@"http://www.google.com"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; [request setHTTPMethod:@"HEAD"]; NSHTTPURLResponse *response; [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: nil]; long long size = [response expectedContentLength]; NSLog(@"%lld",size); 

Это также полезно для условной загрузки на основе заголовка Last-Modified (при условии, что сервер отправляет вам это).

 if ([response respondsToSelector:@selector(allHeaderFields)]) { NSString *lastModifiedString = [[response allHeaderFields] objectForKey:@"Last-Modified"]; } 

вы можете использовать этот метод, объект NSURLResponse, который передается следующим методам делегата:

 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { } -(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response { } 

попробуйте вот так ..

 long long size = [response expectedContentLength]; 

Для Swift используйте эти шаги,

Шаг 1. Используйте NSURLConnectionDataDelegate .

 class ViewController: UIViewController,NSURLConnectionDataDelegate { 

Шаг 2. Создайте запрос на соединение.

 var request:NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "http://www.twitter.com")!) // Use **HEAD** request to get http header information. request.HTTPMethod = "HEAD" 

Шаг 3: Создайте соединение.

 var connection:NSURLConnection = NSURLConnection(request: request, delegate: self)! 

Шаг 4: Используйте метод делегата NSURLConnectionDataDelegate

 func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) { var size = response.expectedContentLength println("size : \(size)") } 

Вот полный код …

 import UIKit class ViewController: UIViewController,NSURLConnectionDataDelegate { override func viewDidLoad() { super.viewDidLoad() var request:NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: "http://www.twitter.com")!) request.HTTPMethod = "HEAD" var connection:NSURLConnection = NSURLConnection(request: request, delegate: self)! } func connection(connection: NSURLConnection, didReceiveResponse response: NSURLResponse) { var size = response.expectedContentLength println("size : \(size)") } } 

попробуйте это поможет. , , , ,

 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { NSHTTPURLResponse * pHttpUrlResponse = (NSHTTPURLResponse *) response; if ([response respondsToSelector:@selector(allHeaderFields)]) { NSString * fileLength = [NSString stringWithFormat:@"%lld",[pHttpUrlResponse expectedContentLength]]; } } 

счастливое кодирование 🙂

Попробуй это,

 NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:URL error:&attributesError]; NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize]; long long fileSize = [fileSizeNumber longLongValue]; 

🙂

Interesting Posts

Как восстановить список переходов для значка панели задач Windows Explorer?

В чем причина, почему «синхронизация» не допускается в методах интерфейса Java 8?

Ошибка Putty X11 proxy: авторизация не распознана

Установить ubuntu для удаленного доступа?

Почему диалоговое окно брандмауэра Mac OS X периодически появляется и исчезает само по себе (без ответа) под Snow Leopard?

Какая разница в настройке Встраивать типы Interop true и false в Visual Studio?

Как перезагрузить настройки цвета Windows после изменения раздела реестра?

Смущает смысл classа «Альтернативный» и его отношение к другим типам classов

Разрешенные символы для идентификаторов CSS

Проблема Java HttpClient для Java Java UTF-8

Получите прокрутку с двумя пальцами на сенсорной панели ноутбука Windows (например, на macbook)?

Удалить кавычки из символьного вектора в R

Подписывает ли подпись метода в Java свой тип возврата?

Параметры кучи JVM

В ASP.NET, когда следует использовать Session.Clear (), а не Session.Abandon ()?

Давайте будем гением компьютера.