这可能吗?也许有些PDF api可以在不下载整个PDF文件的情况下获得一些信息?
答案 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")
}