Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
SmirnoFF.Oleg
63 / 61 / 4
Регистрация: 13.12.2011
Сообщений: 274
#1

.NET 4.x WPF Загрузка файлов по FTP. Права доступа на папки FTP - C# WPF

26.03.2012, 11:33. Просмотров 1774. Ответов 0
Метки нет (Все метки)

Есть функция для загрузки файлов на FTP сервер:
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
private bool FTPUploadFile(string filename, string op, string username, string pass)
        {
            try
            {   
                //System.IO.File.Copy(filename, System.IO.Directory.GetCurrentDirectory() + "\\tmpf\\" + op); //+ System.IO.Path.GetExtension(filename), true);
                if (!System.IO.Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "tmpf\\"))
                    System.IO.Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "tmpf\\");
                System.IO.File.Copy(filename, AppDomain.CurrentDomain.BaseDirectory + "tmpf\\" + op); //+ System.IO.Path.GetExtension(filename), true);
 
                FileInfo fileInf = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "tmpf\\" + op); //+ System.IO.Path.GetExtension(filename));
                string uri = "ftp://" + "zakupki" + "/docsexp/" + fileInf.Name;
                
                FtpWebRequest reqFTP;
                // Создаем объект FtpWebRequest
                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + "zakupki" + "/docsexp/" + fileInf.Name));
                // Учетная запись
                reqFTP.Credentials = new NetworkCredential(username, pass);
                reqFTP.KeepAlive = false;
                // Задаем команду на закачку
                reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
                // Тип передачи файла
                reqFTP.UseBinary = true;
                // Сообщаем серверу о размере файла
                reqFTP.ContentLength = fileInf.Length;
                // Буффер в 2 кбайт
                int buffLength = 2048;
                byte[] buff = new byte[buffLength];
                int contentLen;
 
                Stream strm = reqFTP.GetRequestStream();
                
                // Файловый поток
                FileStream fs = fileInf.OpenRead();
                
                try
                {
                    //Stream strm = reqFTP.GetRequestStream();
                    // Читаем из потока по 2 кбайт
                    contentLen = fs.Read(buff, 0, buffLength);
                    // Пока файл не кончится
                    while (contentLen != 0)
                    {
                        strm.Write(buff, 0, contentLen);
                        contentLen = fs.Read(buff, 0, buffLength);
                    }
                    // Закрываем потоки
                    strm.Close();
                    fs.Close();
                    //System.IO.File.Delete(System.IO.Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory + "tmpf\\" + op)); //+ System.IO.Path.GetExtension(filename));
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Ошибка загрузки файла на сервер", MessageBoxButton.OK, MessageBoxImage.Error);
                    if(strm != null)
                        strm.Close();
                    if(fs != null)
                        fs.Close();
                    return false;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Ошибка загрузки файла на сервер", MessageBoxButton.OK, MessageBoxImage.Error);
                return false;
            }
        }
FTP организован на Windows 2008 Server R2

При выполнении
C#
1
Stream strm = reqFTP.GetRequestStream();
Если на папку FTP нету общего доступа для всех на чтение/запись, возникает ошибка получения доступа.

Какие права должны быть на папку, чтобы пользователи могли туда загружать файлы?

P.S. Если стоит доступ для всех на чтение/запись, то любой может зайти на \\SERVER_NAME\ и что угодно сотворить с файлами (удалить, переименовать, добавить).

Хотелось бы разрешить доступ только для тех кто загружает файлы через программу используя функцию FTPUploadFile(string filename, string op, string username, string pass)

Как решить проблему? Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2012, 11:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .NET 4.x WPF Загрузка файлов по FTP. Права доступа на папки FTP (C# WPF):

.NET 4.x C#: Загрузка файлов по FTP-протоколу - C#
Подскажите, пожалуйста, как реализовать загрузку файлов на свой сервер по протоколу FTP? У меня есть файл, выбранный в openFileDialog1...

.NET 4.x Загрузка с FTP только определенных файлов. - C#
Как в этом коде: public string GetFileList() { string downloadFiles; StringBuilder result = new...

Как передать файлы по мейлу, mail, передача файлов без ftp сервера, некрупный файл, из определённой папки C# - C#
Здравствуйте, подскажите пожалуйста как отправить файл из конкретной папки через mail при нажатии на кнопку в программе, чтобы отправлялся...

Как поменять права на файл или папку по FTP? - C#
Много времени провел в гугле и не нашел внятного ответа. Как поменять права на файл или папку по FTP?

Загрузка файла с FTP сервера - C#
Всем привет.Подскажите пожалуйста как реализовать скачивание файла с FTP-сервера (FTP сайта)? Нужно задать логин,пароль,порт и место куда...

Загрузка файла на FTP через php - C#
Здравствуйте, существует следующая проблема, при написании программы на c# которая бы отправляла файл на сервер с компьютера, приходиться...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2012, 11:33
Привет! Вот еще темы с ответами:

Загрузка файла с FTP с отображением прогресса - C#
Всем привет. Задача: Есть форма. На ней два элемента - прогресс бар и кнопка. При нажатии на кнопку, должна начаться закачка файла...

WebClient.DownloadFileTaskAsync() FTP прерывается загрузка - C#
Есть список ссылок на файлы ftp. Есть необходимость загрузить эти файлы асинхронно, при этом отобразить прогресс загрузки каждого. ...

Редактрование файлов через ftp - C#
Ребята, подкажите, плз как можно через ftp редактировать XML-файл. Хочу написать приложение которое будет редактировать файл на...

Дата и время FTP файлов - C#
все работает... единственно вопрос. когда открываю фтп-сервер в ФФоксе, у меня отображается список файлов вместе с датой...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru