Получите размер изображения, размещенного на удаленном сервере, перед загрузкой

Используйте это ...

var all_matches = your_string.match(re);
console.log(all_matches)

Он вернет массив всех совпадений ... Это будет работать нормально ... Но помните, что он не будет принимать группы в учетной записи. Он просто вернет полные совпадения ...

0
задан David 13 July 2018 в 10:10
поделиться

2 ответа

Я нашел это решение после нескольких дней поиска:

    func getHeaderInformations (myUrl: URL, completion: @escaping (_ content: String?) -> ()) {

    var request = URLRequest(url: myUrl)
    request.httpMethod = "HEAD"
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
    guard error == nil, let reponse = response as? HTTPURLResponse, let contentType = reponse.allHeaderFields["Content-Type"],let contentLength = reponse.allHeaderFields["Content-Length"]

        else{
            completion(nil)
            return
    }
        let content = String(describing: contentType) + "/" + String(describing: contentLength)

            completion(content)
    }
    task.resume()
}

Использование выглядит так:

getHeaderInformations(for: url, completion: { content in

print(content ?? 0)

})

Надеюсь, этот ответ может помочь кому-то.

1
ответ дан jordy 17 August 2018 в 13:15
поделиться

Вы должны использовать этот пример кода запроса HEAD, который вы отправили, но вместо использования двух функций и двух веб-запросов выполните 1 функцию с именем getHeaders, которая возвращает request.allHeaderFields. Затем вы можете сделать метод, который вызывает getHeaders, и если Content-Length и Content-Type - это то, что вы ожидаете, затем выполните запрос GET для фактической загрузки данных.

Этот подход будет более эффективным для пользователя и сервера, потому что они будут делать только 1 запрос HEAD вместо 2.

0
ответ дан Nate 17 August 2018 в 13:15
поделиться
  • 1
    Привет, это не работает. Я не могу найти параметр для .allHeaderFields, чтобы вернуть тип и длину или все. Можете ли вы привести мне пример? – jordy 18 July 2018 в 04:21