2016-05-11 11 views

Antwort

0

Sie können NSURLSession verwenden, um die Inhaltslänge der Remote-Datei anzufordern. Dies kann durch Einstellung des request.HTTPMethod = "HEAD"

Diese Methode wird die Dateigröße für die angegebene 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 
} 

Bitte beachten Sie erfolgen: Diese Methode sollte der Faden wie diese Blöcke auf einem anderen Thread aufgerufen werden Es ist angerufen.

Für z.B. :

Methodenaufruf

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: Hat das für dich funktioniert? Wenn Sie weitere Details benötigen, lassen Sie es mich wissen. – UditS

Verwandte Themen