Я пытаюсь найти размер файла на сервере. Следующий код, который я получил от этот парень, выполняет это для вашего собственного сервера:
string MyFile = "~/photos/mymug.gif";
FileInfo finfo = new FileInfo(Server.MapPath(MyFile));
long FileInBytes = finfo.Length;
long FileInKB = finfo.Length / 1024;
Response.Write("File Size: " + FileInBytes.ToString() +
" bytes (" + FileInKB.ToString() + " KB)");
Оно работает. Однако я хочу найти размер файла, например:
string MyFile = "http://www.google.com/intl/en_ALL/images/logo.gif";
FileInfo finfo = new FileInfo(MyFile);
Затем я получаю надоедливую ошибку: URI formats are not supported.
Как я могу узнать размер файла логотипа Google с помощью ASP.NET?





Чтобы получить это значение, вам нужно сначала загрузить файл локально, а затем вы можете использовать стандартные методы, чтобы получить его размер.
Мехрдад предложил единственную другую альтернативу, о которой я знаю, но, как он упомянул, она немного отрывочна в поддержке.
так что, если размер файла составляет 1 ГБ, вы ожидаете, что он его загрузит?
К сожалению, это единственный выход, если ответ Мердада не сработает.
Вы можете использовать класс WebRequest для отправки HTTP-запроса на сервер и чтения заголовка Content-Length (для этого вы, вероятно, могли бы использовать метод HTTP HEAD). Однако не все веб-серверы отвечают заголовком Content-Length. В таких случаях вам необходимо получить все данные, чтобы получить размер.
Я попробовал ваш метод, но получил весь файл в качестве ответа WebRequest
@Desolator: Вы уверены, что веб-сервер работает нормально?
Думаю, север работает наверное. Этот метод работает нормально: stackoverflow.com/a/11697647/586399
@Desolator, этот метод не только получает заголовки. Он получит столько пакетов, сколько вы можете получить, прежде чем вы отключите соединение, поэтому он сильно отличается от идеального запроса HEAD. Я предполагаю, что сервер неправильно реализовал метод HEAD.
Черт возьми. Это ЕДИНСТВЕННЫЙ способ сделать это?