如何在iOS上的UIWebview打开之前了解PDF文件大小

时间:2016-05-11 11:04:23

标签: ios pdf uiwebview

这可能吗?也许有些PDF api可以在不下载整个PDF文件的情况下获得一些信息?

1 个答案:

答案 0 :(得分: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")
}
相关问题