Prafful007 Ответов: 1

Создайте каталог и подкаталог динамически в windows FTP server при загрузке файла нажмите кнопку событие и сохраните загруженный файл в этот подкаталог.


У меня есть asp.net веб-форма с 2 текстовыми полями "имя" и "фамилия". Я загружаю документы для сотрудника из той же формы aspx, используя загрузку файлов и общий обработчик. I ftp-путь-это "ftp://192.168.1.10/" и я хочу создать каталог динамически со значением FirstName и LastName, введенным пользователем.
Кто-нибудь может мне помочь???

Что я уже пробовал:

Универсальный код обработчика

int count = 0;
            bool IsFileExist = true;
            string fileName = null;
            string FirstName = oEntity.FirstName;
            string LastName = oEntity.LastName;
            //if (context.Session["mode"] != null && context.Session["mode"] == "ajax")
            //{
            //    string FirstName = context.Session(["FirstName"]) ;
            //    string LastName = context.Session["LastName"];
            //}
            //if (Request.QueryString["mode"] != null && Request.QueryString["mode"] == "ajax")
            //{
            //    //Saving the variables in session. Variables are posted by ajax.
            //    Session["FirstName"] = Request.Form["FirstName"] ?? "";
            //    Session["LastName"] = Request.Form["LastName"] ?? "";
            //}

            
            if (context.Request.Files.Count > 0)
            {
                HttpFileCollection files = context.Request.Files;
                for (int i = 0; i < files.Count; i++)
                {
                    HttpPostedFile file = files[i];

                    //FTP Server URL.
                    string ftp = "ftp://192.168.1.10/";

                    //FTP Folder name. Leave blank if you want to upload to root folder.
                    string ftpFolder = "Employee_Attachments/" + FirstName + LastName;
                    DirectoryInfo MainDirectory = new DirectoryInfo(ftpFolder);
                    DirectoryInfo SubDirectory = MainDirectory.CreateSubdirectory(FirstName + LastName);
                    //Directory.CreateDirectory = (FirstName + "_" + LastName);
                    
                    byte[] fileBytes = null;

                    //Read the FileName and convert it to Byte array.
                    fileName = Path.Combine(Path.GetFileName(file.FileName));
                    while (IsFileExist == true)
                    {   
                        IsFileExist = CheckIfFileExistsOnServer(fileName);
                        if (IsFileExist == true)
                        {
                            string extension = Path.GetExtension(fileName);
                            fileName = fileName.Substring(0, fileName.IndexOf(".") + 0);
                            if (fileName.Contains('('))
                            {
                                fileName = fileName.Substring(0, fileName.IndexOf("(") + 0);
                            }

                            string withoutextension = Path.GetFileNameWithoutExtension(fileName);
                            string po = withoutextension + '(' + count++ + ')';
                            fileName = po + extension;
                        }
                    }

                    using (StreamReader fileStream = new StreamReader(file.InputStream))
                    { 
                        fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
                        fileStream.Close();
                    }
                    try
                    {
                        //Create FTP Request.
                        //FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp + ftpFolder + fileName);
                        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp + MainDirectory + SubDirectory + fileName);
                        request.Method = WebRequestMethods.Ftp.UploadFile;

                        //Enter FTP Server credentials.
                        request.Credentials = new NetworkCredential("Administrator", "Support24x7");
                        request.ContentLength = fileBytes.Length;
                        request.UsePassive = true;
                        request.UseBinary = true;
                        request.ServicePoint.ConnectionLimit = fileBytes.Length;
                        request.EnableSsl = false;

                        using (Stream requestStream = request.GetRequestStream())
                        {
                            requestStream.Write(fileBytes, 0, fileBytes.Length);
                            requestStream.Close();
                        }
                        FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                        // fileName += fileName;

                        response.Close();
                    }
                    catch (WebException ex)
                    {
                        throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
                    }
                }
                context.Response.StatusCode = 200;
                context.Response.ContentType = "text/plain";
                context.Response.Write(fileName);
            }



Код Aspx

<div id="change">
                <div class="col-md-12">
                    <div class="col-md-4">
                        <div class="col-md-4">
                            <label id="lblFirstName" class="control-label">FirstName</label>
                        </div>
                        <div class="col-md-8">
                            <input id="txtFirstName" type="text" class="form-control" />
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="col-md-4">
                            <label id="lblMiddleName" class="control-label">MiddleName</label>
                        </div>
                        <div class="col-md-8">
                            <input id="txtMiddleName" type="text" class="form-control" />
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="col-md-4">
                            <label id="lblLastName" class="control-label">LastName</label>
                        </div>
                        <div class="col-md-8">
                            <input id="txtLastName" type="text" class="form-control" />
                        </div>
                    </div>
                </div></div><pre> <div class="form-group vspace">
                            <div class="col-lg-12">
                                <div class="col-md-10">
                                    <div class="col-md-3">
                                        <label for="fupload" />
                                        <input id="fupload" type="file" />
                                    </div>
                                    <div class="col-md-7">
                                        <input id="btnUpload" type="button" onclick="" value="Upload" class="btncan" />
                                    </div>
                                </div>
                            </div>
                        </div>

ZurdoDev

В чем именно заключается ваш вопрос?

Prafful007

Мой вопрос заключается в следующем....
Когда я нажимаю на кнопку file upload control-> выберите Файл -> Затем нажмите на кнопку upload, я хочу, чтобы папка автоматически создавалась на ftp-сервере. Созданная папка должна быть названа с текстом, приведенным в двух текстовых полях.
например:- если я наберу имя "Prafful" в txtFirstName(идентификатор текстового поля) и "Coder" в txtLastName, то папка, созданная на ftp-сервере, будет иметь имя Prafful_Coder. Загруженный файл должен быть сохранен в этой папке.

Prafful007

Вся функциональность должна происходить при нажатии кнопки загрузки события.

ZurdoDev

Итак, ваш вопрос действительно заключается в том, как вы передаете больше информации во время загрузки файла. И это зависит от того, какой элемент управления загрузкой файлов вы используете.

Prafful007

да, именно так!!!

Ziee-M

https://stackoverflow.com/questions/21666412/ftp-create-folder-and-upload-files-in-c-sharp

1 Ответов

Рейтинг:
2

#realJSOP

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

Если вы сохраняете файл на удаленном FTP-сервере, вам придется установить ftp-соединение и выполнить соответствующие действия ftp, чтобы сделать то, что вы хотите. Если вы просто загружаете файл в папку на веб-сайте, вам просто нужно установить полный путь для сохранения файла и использовать методы файловой системы для управления папками.