2016-05-11 7 views

答えて

0

NSURLSessionを使用すると、リモートファイルのコンテンツ長を要求できます。このメソッドは、スレッド、このブロックとして他のいくつかのスレッドで呼び出されなければなりません:これはに注意してください。このメソッドは、指定された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 
} 

のファイルサイズを取得しますrequest.HTTPMethod = "HEAD"

を設定することによって行うことができますそれが呼び出されました。

あなたはこの答えを確認することができ、メソッド呼び出し

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