2016-05-11 3 views
0

Возможно ли это? Возможно, есть некоторые PDF-файлы api, которые могут получить некоторую информацию без скачивания всего файла PDF?Как узнать размер файла PDF до открытия UIWebview на iOS

+0

вы можете проверить этот ответ http://stackoverflow.com/questions/19632193/objective-c-check-file-size-from-url-without-downloading – sanman

ответ

0

Вы можете использовать NSURLSession для запроса длины содержимого удаленного файла. Это можно сделать, установив request.HTTPMethod = "HEAD"

Этот метод получает размер файла для заданного remoteFileURL

func getRemoteFileSize(remoteFileURL : String) -> Int64{ 

    var contentLength: Int64 = NSURLSessionTransferSizeUnknown 

    if let remoteURL = NSURL(string: remoteFileURL) { 

     // Create a semaphore to wait for NSURLSession's dataTask to complete 
     // before returning from function 
     let semaphore = dispatch_semaphore_create(0) 

     let request = NSMutableURLRequest(URL: remoteURL) 
     request.HTTPMethod = "HEAD" 

     let session = NSURLSession.sharedSession().dataTaskWithRequest(request, 
                     completionHandler: 
      { (data, response, error) -> Void in 
      contentLength = response?.expectedContentLength ?? NSURLSessionTransferSizeUnknown 

      //Signal the semaphore to continue execution 
      dispatch_semaphore_signal(semaphore) 
     }) 
     session.resume() 

     dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER) 
    } 

    print("File size is \(contentLength)") 
    return contentLength 
} 

Пожалуйста, обратите внимание: Этот метод должен быть вызван какой-либо другой нитью, как это блокирует нить это называется.

См., Например, :

Метод вызова

let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 
dispatch_async(queue) { 

    self.getRemoteFileSize("https://pmcdeadline2.files.wordpress.com/2014/06/apple-logo.jpg") 
} 
+0

@Gon: Это работало для вас? Если вам нужны дополнительные данные, дайте мне знать. – UditS

Смежные вопросы