Response.WriteFile с URL возможно?

Я хотел бы иметь возможность сделать это:

Response.WriteFile ("http://domain/filepath/file.mpg")

Но я получаю эту ошибку:

Invalid path for MapPath 'http://domain/filepath/file.mpg' 
A virtual path is expected.

WriteFile Метод не работает с URL. Есть ли другой способ, которым я могу написать содержимое URL на мою страницу?

Благодарю.

3 ответа

Решение

Если вам нужен код для такой работы, вам сначала нужно будет динамически загрузить его на свой сервер:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://domain/filepath/file.mpg");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream file = response.GetResponseStream();

С этого момента у вас есть содержимое файла в виде потока, и вам придется читать / записывать байты в ответ.

Я отмечу, однако, что это не обязательно оптимально - вы будете убивать свою пропускную способность, потому что каждый файл будет использовать гораздо больше ресурсов, чем необходимо.

Если возможно, переместите файл на свой сервер или заново продумайте, что именно вы пытаетесь сделать.

Возможное решение было бы просто использовать:

Response.Redirect("http://domain/filepath/file.mpg")

Но тогда я не уверен, действительно ли это то, что вы действительно пытаетесь сделать или нет.

В основном у вас есть пара вариантов. Вы можете скачать файл на свой сервер и использовать его Response.WriteFile или вы можете перенаправить на фактическое местоположение. Если файл уже находится на вашем сервере, вам просто нужно указать путь к файловой системе Response.WriteFile вместо URL, или используйте виртуальный URL, удалив http://domain,

Другие вопросы по тегам