Создайте каталог и подкаталог динамически в 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