使用 NSURLConnection 获取文件大小非常慢
Getting file size with NSURLConnection is very slow
我尝试获取存储在服务器上的文件的文件大小。
我设法做到了,但它需要我下载它的时间。
我假设它会下载文件来评估大小。
有没有更快的方法获取文件大小?
func getFileSizeFromURL(sURL:String) -> String{
let urlPath: String = sURL;
var url: NSURL = NSURL(string: urlPath)!
var request1: NSURLRequest = NSURLRequest(URL: url)
var response : NSURLResponse?
NSURLConnection.sendSynchronousRequest(request1, returningResponse: &response , error: nil)
var size:String="";
if let httpResponse = response as? NSHTTPURLResponse {
println(httpResponse.expectedContentLength)
size="\(httpResponse.expectedContentLength)"
}
return size;
}
I assume it will download the file to evaluate the size.
是的,那是因为您确实在下载文件。您应该改为使用 HEAD request 来获取有关文件的数据。将方法从 GET 或 POST 更改为 HEAD 将只获得 HTTP headers。在创建 request1
:
后插入这样一行
request1.HTTPMethod = "HEAD"
我尝试获取存储在服务器上的文件的文件大小。
我设法做到了,但它需要我下载它的时间。
我假设它会下载文件来评估大小。
有没有更快的方法获取文件大小?
func getFileSizeFromURL(sURL:String) -> String{
let urlPath: String = sURL;
var url: NSURL = NSURL(string: urlPath)!
var request1: NSURLRequest = NSURLRequest(URL: url)
var response : NSURLResponse?
NSURLConnection.sendSynchronousRequest(request1, returningResponse: &response , error: nil)
var size:String="";
if let httpResponse = response as? NSHTTPURLResponse {
println(httpResponse.expectedContentLength)
size="\(httpResponse.expectedContentLength)"
}
return size;
}
I assume it will download the file to evaluate the size.
是的,那是因为您确实在下载文件。您应该改为使用 HEAD request 来获取有关文件的数据。将方法从 GET 或 POST 更改为 HEAD 将只获得 HTTP headers。在创建 request1
:
request1.HTTPMethod = "HEAD"