Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение списка файлов со стороны сервера 
:(
    Опции темы
IHELLRAiSERI
Дата 27.8.2010, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.8.2010

Репутация: нет
Всего: нет



Доброго!
Кто сможет подсказать как получить список файлов в Silverlight из папки на стороне сервера?
Для примера:
Нужно прочитать папку там же, где и запускается приложение (НЕ локальную на стороне пользователя, хотя и с этим проблемы, нет доступа к папке), посчитать файлы jpg, создать стока же элементов image в приложении, и загрузить в них картинки. Код лучше на VB, но если что то и на C разберусь.
PM MAIL   Вверх
jonie
Дата 27.8.2010, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 2
Всего: 118



Ну я бы предложил обмениваться по RESTful протоколу с SL приложением.
В VS2010 есть готовый проект WCF REST application, давите его (если надо качаете его из online templates).
В коде сервиса пишите:
Код

    public class FsItem
    {
        public string Name { get; set; }
        public bool IsDirectory { get; set; }
    }

    // Start the service and browse to http://<machine_name>:<port>/Service1/help to view the service's generated help page
    // NOTE: By default, a new instance of the service is created for each call; change the InstanceContextMode to Single if you want
    // a single instance of the service to process all calls.    
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    // NOTE: If the service is renamed, remember to update the global.asax.cs file
    public class Service1
    {
        // TODO: Implement the collection resource that will contain the SampleItem instances

        [WebGet(UriTemplate = "/?path={path}")]
        public List<FsItem> GetCollection(string path)
        {
            DirectoryInfo di = new DirectoryInfo(path);
            List<FsItem> rv = new List<FsItem>();
            
            rv.AddRange(di.GetFiles().Select(x => new FsItem() { Name = x.Name, IsDirectory = false }));
            rv.AddRange(di.GetDirectories().Select(x => new FsItem() { Name = x.Name, IsDirectory = true }));

            return rv;
        }

    }


Вуаля, у вас есть сервис, которй по адресу http://localhost:XXX/Service1/?path=C:\ выдаст вам массив FsItem-ов.

Далее в лепите Silverlight приложение (при этом важно чтоб хостили в одном проекте*), в нем на форму бросаете ListBox (с именем resultLB), в коде пишите примерно такое:
Код

        private void ListBox_Loaded(object sender, RoutedEventArgs e)
        {
            ListBox lb = (ListBox)sender;
            string serviceBaseUrl = "http://localhost:3404/Service1/";
            string query = "?path=c:\temp";

            WebClient client = new WebClient();
            client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(SearchRecipesByNameCompleted);
            client.DownloadStringAsync(new Uri(serviceBaseUrl + query, UriKind.Absolute));

        }

        void SearchRecipesByNameCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            XDocument xml = XDocument.Parse(e.Result);

            var dirInfoList = xml.Descendants("ArrayOfFsItem")
                .Nodes()
                .Select(node => ((XElement)node).Element("Name"));

            resultLB.ItemsSource = dirInfoList.ToList();
        }


*)Прочитайте про Access-Control-Allow-Origin  тут https://developer.mozilla.org/en/docs/HTTP_access_control
Вам придется ставить его, если сервис WCF будет на другом хосте, нежели SL хостящий проект. Это поле можно поставить в IIS вручную.



--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
IHELLRAiSERI
Дата 27.8.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 27.8.2010

Репутация: нет
Всего: нет



jonie, За информацию Спасибо! Я еще совсем новичок. Просто надо написать приложение. Над темой подумаю. Вот тока хост не IIS а Unix.
PM MAIL   Вверх
jonie
Дата 27.8.2010, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 2
Всего: 118



IHELLRAiSERI, ну ничего не мешает вам реализовать RESTful сервис например на php, это же просто XML-ка в ответ на HTTP GET запрос


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.1018 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.