Как найти размер файла перед загрузкой его в 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

Как HashTables справляется с столкновениями?

Google Chrome находится на немецком языке. Как мне сделать это на английском?

Очистить кеш запросов MySQL без перезапуска сервера

Как программно подключить клиента к службе WCF?

Является ли stream генератора случайных чисел C # безопасным?

Почему темы не рекомендуются в .NET Reactive Extensions?

Как обновить repository maven в Eclipse?

Как пропустить простой объект JavaScript с объектами в качестве членов?

Заменить слово несколькими строками с помощью sed?

Как изменить значки меню навигации и переполнения панели инструментов (appcompat v7)?

Как мне сопоставить долю сети с помощью терминала Linux?

Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?

Поддерживает ли поддержка Android несколько языков?

Android: Как установить уровень масштабирования вида карты в радиусе 1 км вокруг моего текущего местоположения?

как создать линию произвольной толщины с помощью Bresenham?

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