Получение потока с абсолютного пути? - PullRequest
6 голосов
/ 04 сентября 2010

У меня есть этот метод:

public RasImage Load(Stream stream);

, если я хочу загрузить URL, например:

string _url = "http://localhost/Application1/Images/Icons/hand.jpg";

Как я могусделать этот URL в поток и передать его в мой метод load?

Ответы [ 2 ]

5 голосов
/ 04 сентября 2010

Ответ Дэна хороший, хотя вы запрашиваете у localhost.Это файл, к которому вы можете получить доступ из файловой системы?Если это так, я думаю, вы должны просто передать FileStream:

FileStream stream = new FileStream(@"\path\to\file", FileMode.Open);
5 голосов
/ 04 сентября 2010

Вот один из способов.Я действительно не знаю, лучший ли это способ или нет, но он работает.

// requires System.Net namespace
WebRequest request = WebRequest.Create(_url);

using (var response = request.GetRespone())
using (var stream = response.GetResponseStream())
{
    RasImage image = Load(stream);
}

ОБНОВЛЕНИЕ : В Silverlight класс WebRequestнет GetResponse метод;у вас нет выбора, кроме как сделать это асинхронно.

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

WebRequest request = WebRequest.Create(_url);

IAsyncResult getResponseResult = request.BeginGetResponse(
    result =>
    {
        using (var response = request.EndGetResponse(result))
        using (var stream = response.GetResponseStream())
        {
            RasImage image = Load(stream);
            // Do something with image.
        }
    },
    null
);

Console.WriteLine("Waiting for response from '{0}'...", _url);
getResponseResult.AsyncWaitHandle.WaitOne();

Console.WriteLine("The stream has been loaded. Press Enter to quit.");
Console.ReadLine();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...