Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 6

Проблема с определением расширения файла при передаче от сервера клиенту

26.05.2014, 15:12. Показов 1217. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
приложение для передачи файла от сервера клиенту.
сначала передает информацию о файле, а потом сам файл.
во время передачи информации о файле определяется расширение (последние 4 символа принимаются за расширение)
Помогите исправить так, что бы расширение определялось по-нормальному, а не так криво как сейчас

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Xml.Serialization;
using System.Diagnostics;
using System.Threading;
 
namespace File_Server
{
    public class Program
    {
        [Serializable]//Преобразование объекта в поток данны для его хранения или передачи в файл,память или БД
        public class File
        {
            public string file_type = "";//Тип файла
            public long file_size = 0;//Размер
        }
 
        private static File FileDet = new File();//Экземпляр класса File
        private static IPAddress remoteIPAddress;//Получаем IP
        private const int remotePort = 5002;//Назначаем порт
        private static UdpClient sender = new UdpClient();//Обеспечиваем сетевые службы проотоколом UDP
        private static IPEndPoint endPoint;//Сетевая конечная точка(IP , Порт)
        private static FileStream fs;
        [STAThread]//У приложение только один поток выполнения.(STA - single threading model)
        static void Main(string[] args)// этом методе вводим удаленный IP-адрес, по которому нужно отправить файл, путь и имя отправляемого файла. 
            //Открываем этот файл в объекте FileStream и определяем его длину.
        {
            try
            {
                Console.WriteLine("Введите удаленный IP-адрес");
                remoteIPAddress = IPAddress.Parse(Console.ReadLine().ToString());
                endPoint = new IPEndPoint(remoteIPAddress, remotePort);// Получаем удаленный IP-адрес и создаем IPEndPoint
                Console.WriteLine("Введите путь к файлу и его имя");// Получаем путь файла и его размер (должен быть меньше 8kb)
                fs = new FileStream(@Console.ReadLine().ToString(), FileMode.Open, FileAccess.Read);
                if (fs.Length > 12192)
                {
                    Console.Write("Файл должен весить меньше 8кБ");
                    sender.Close();//Закрываем UDP-подключение
                    fs.Close();//Закрываем поток и освобождаем все ресурсы
                    return;
                }
                SendFileInfo();// Отправляем информацию о файле
                Thread.Sleep(2000);// Ждем 2 секунды
                SendFile();// Отправляем сам файл
                Console.ReadLine();
            }
            catch (Exception eR)
            {
                Console.WriteLine(eR.ToString());
            }
        }
        public static void SendFileInfo()//заполняет поля объекта FileDetails, а затем сериализует объект в MemoryStream. 
            //Этот объект считывается в массив байтов и передается методу Send() класса UdpClient, который отправляет информацию о файле клиенту.
        {
            //select Path.GetExtension(file.FullName);
            FileDet.file_type = fs.Name.Substring((int)fs.Name.Length - 4, 4);// Получаем тип и расширение файла
            FileDet.file_size = fs.Length;// Получаем длину файла
            XmlSerializer fileSerializer = new XmlSerializer(typeof(File));//сериализуем обьект в memorystream, используя xmlserializer
            MemoryStream stream = new MemoryStream();
            fileSerializer.Serialize(stream, FileDet);// Сериализуем объект
            stream.Position = 0;
            Byte[] bytes = new Byte[stream.Length];
            stream.Read(bytes, 0, Convert.ToInt32(stream.Length));// Считываем поток в байты
            Console.WriteLine("Отправка деталей файла...");
            sender.Send(bytes, bytes.Length, endPoint);// Отправляем информацию о файле
            stream.Close();
 
        }
        private static void SendFile()//sendfile просто считывает содержимое файла из filestream в массив байтов и отправляет клиенту
        {
            Byte[] bytes = new Byte[fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            Console.WriteLine("Отправка файла размером " + fs.Length + " байт");
            try
            {
                sender.Send(bytes, bytes.Length, endPoint);// Отправляем файл
            }
            catch (Exception eR)
            {
                Console.WriteLine(eR.ToString());
            }
            finally
            {
                // Закрываем соединение и очищаем поток
                fs.Close();
                sender.Close();
            }
            Console.WriteLine("Файл успешно отправлен.");
            Console.Read();
        }
    }
}
Миниатюры
Проблема с определением расширения файла при передаче от сервера клиенту  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.05.2014, 15:12
Ответы с готовыми решениями:

Некорректное отображение кириллицы при передаче данных от сервера клиенту
Здравствуйте. ПИшу проект, в котором нужно передавать текст от сервера к клиенту и наоборот. возникла проблема... кодировка в...

Теряются байты при передаче массива структур клиенту
Здравствуйте. Сервер подаёт на клиент массив структур. размер структуры 148байт. т.е всего 4400байт Получаю данные чз BeginReceive....

Передача файла html файла от сервера к клиенту
Столкнулся с проблемой передачи файла html файла от сервера к клиенту. Прошу сильно не ругать как я в таком деле новичок((( Задача такая:...

2
 Аватар для Detect
123 / 123 / 72
Регистрация: 11.05.2014
Сообщений: 331
26.05.2014, 15:34
Возможно так:
C#
1
FileDet.file_type = Path.GetExtension(fs.Name).Replace(".","");
Без Replace, соответственно, расширение будет с точкой.
0
Рожденная для битвы
 Аватар для marina2
294 / 72 / 15
Регистрация: 08.11.2009
Сообщений: 1,272
16.06.2014, 05:27
Может с помощью регулярного выражения?

Добавлено через 15 минут
C#
1
2
3
4
5
6
7
8
9
 [HttpPost]
        public ActionResult Upload(HttpPostedFileBase file)
        {
            // Получаем расширение
            string ext = file.FileName.Substring(file.FileName.LastIndexOf('.'));
            // сохраняем файл по определенному пути
            file.SaveAs("C:\\avatar." + ext);
            return View();
        }
Почему в строке сохранения файла получаем исключение несанкционированного доступа?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.06.2014, 05:27
Помогаю со студенческими работами здесь

Автоматическая выгрузка файла от сервера к клиенту
Итак, имеем файл а сервере (напр. тест.txt). На него ведет линк. Клиент щелкает по линку. Нужно: 1) Файл автоматически выгружается на...

Проблема с передачей файла клиенту через Response.binarywrite
Народ... Я уже во многих форумах спрашивал, но никто не ответил, может хоть вы мне поможите Я из ASP передаю файл клиенту через...

Ошибка: Socket WouldBlock, при отправке сообщения от сервера к клиенту
Привет, есть некий сервер, раньше работало все четко, а после последних изменений (незначительных) стала вылазить ошибка в сабже, и только...

Отправка сообщения от сервера клиенту при выполнении определенного условия в таймере
Не могу разобраться. Есть две формы. На первой клиент и метка, на второй сервер, image и таймер. В таймере происходит плавное перемещение...

Проблема при передаче данных через RS232 - Wi-Fi
Устройство с интерфейсом RS232 подключено через Wi-Fi удлинитель WiBOX...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru