Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WEB-Service передача/чтение фалов на сервер 
:(
    Опции темы
Чердак
  Дата 8.11.2008, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброе время суток.
Нужно написать метод в WEB-службе, который будет принимать файлы (*.doc, *.xls) от клиента и отправлять клиенту. Как это можно организовать?
--------------------
PM MAIL   Вверх
Bogdan1024
Дата 8.11.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



У сервиса:
-------------
Создаёшь метод у вэб-сервиса, который принимает byte[]. В этом массиве будет твой файл.
Подключаешь к проекту WSE 3.0. 
Включаешь поддержку MTOM.

У клиента:
--------------
Подключаешь к проекту WSE 3.0. 
Делаешь ссылку на вэб-сервис.
Используешь.

Добавлено через 1 минуту и 9 секунд
Можно обойтись и без WSE 3.0 + MTOM, но MTOM круто помогает сэкономить на пересылке больших данных между клинетом и сервисом.

Добавлено через 1 минуту и 46 секунд
Это решение касалось .NET 2.0, что там в .NET 3.5 + WCF я не знаю smile

Это сообщение отредактировал(а) Bogdan1024 - 8.11.2008, 22:00


--------------------
user posted image
PM MAIL   Вверх
Чердак
Дата 8.11.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как в массив занести файл? можно небольшой пример.
Bogdan1024, а как подключить к проекту WSE 3.0. и  поддержку MTOM.

И еще такой ламерский вопрос: как работать с byte[], как занести туда файл, как потом считать и сохранить уже как файл?
Если можно примерчик.

Это сообщение отредактировал(а) Чердак - 8.11.2008, 23:28
--------------------
PM MAIL   Вверх
Bogdan1024
Дата 9.11.2008, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



У тебя ASP.NET приложение или ещё какое? Откуда ты файлы берёшь? Моожно так:
Код

            string f = @"TextFile1.txt";
            System.IO.FileStream fs = new System.IO.FileStream(f, System.IO.FileMode.Open);
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, (int)fs.Length);
            fs.Close();

Ясно что такие вещи как название файла и его атрибуты в этот массив не входят. Их нужно передавать отдельно.
Чтобы поставить WSE его нужно скачать. Погугли, его просто найти.


--------------------
user posted image
PM MAIL   Вверх
Чердак
Дата 9.11.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пока WSE не ставил, хз потому что как его юзать. Клиент у меня знает имя файла, который хранится на сервере и тип этого файла. В базе есть таблица, в которой хранятся адреса, по которым можно найти документы соответствующего типа.
Клиент должен передать серверу имя и тип документа. 
Написал метод для web-srvece:
Код

        #region byte[] SendFile(string FileNeme, string FileType) Передача файла клиенту
        // FileNeme - имя файла
        // FileType - тип документа
        [WebMethod(Description = "Передача файла клиенту")]
        public byte[] SendFile(string FileNeme, string FileType)
        {
            //Узнаем путь к папке, где хранятся доки нужного типа:
            string SelectString = @"
            SELECT  Path
            FROM    DocumentInfo WHRER Name = '" + FileType+"'";
            SqlConnection connection = new SqlConnection(
               ConnectionString);
            SqlCommand command = new SqlCommand(
            SelectString, connection);
            connection.Open();

            string  Path = command.ExecuteScalar().ToString();
            string FullName = Path + FileNeme;

            System.IO.FileStream fs = new System.IO.FileStream(FullName, System.IO.FileMode.Open);
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, (int)fs.Length);
            fs.Close();
            return bytes;
        }
        #endregion   


Как теперь мне на клиенте обратно вернуть из byte[] документ типа *.xls сохранить его при это во временной папке и открыть клиенту?

Это сообщение отредактировал(а) Чердак - 9.11.2008, 13:27
--------------------
PM MAIL   Вверх
Bogdan1024
Дата 9.11.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Код

            string f = @"TextFile2.txt";
            System.IO.FileStream fs = new System.IO.FileStream(f, System.IO.FileMode.Create);
            fs.Write(bytes, 0, bytes.Length);            
            fs.Close();




--------------------
user posted image
PM MAIL   Вверх
Bogdan1024
Дата 9.11.2008, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Так даже лучше:
Код

            //читаем
            string f = @"TextFile1.txt";            
            byte[] bytes = System.IO.File.ReadAllBytes(f);
            //записываем
            string f2 = @"TextFile2.txt";
            System.IO.File.WriteAllBytes(f2, bytes);


Это сообщение отредактировал(а) Bogdan1024 - 9.11.2008, 14:21


--------------------
user posted image
PM MAIL   Вверх
Чердак
Дата 9.11.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Bogdan1024, спасибо  smile 

--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




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


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

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