گاهی اوقات نیاز هست که از طریق کد، فایل مورد نظر را روی سرور مجزا و با استفاده از اطلاعات ftp آپلود کنیم. در این مقاله، قطعه کدهای لازم برای انجام چنین کاری نوشته می شوند.
در ابتدا کدهای سمت html برای یک فایل آپلود و دکمه را قرار می دهیم:
- <asp:FileUpload ID="FileUpload1" runat="server" />
- <asp:Button Text="Upload to FTP" runat="server" OnClick="FTPUpload" />
- <hr />
- <asp:Label ID="lblMessage" runat="server" />
سپس کدهای تابع کلیک روی دکمه را به این صورت می نویسیم:
- protected void FTPUpload(object sender, EventArgs e)
- {
-
- string ftp = "ftp://yourserver.com/";
-
-
- string ftpFolder = "Uploads/";
-
- byte[] fileBytes = null;
-
-
- string fileName = Path.GetFileName(FileUpload1.FileName);
- using (StreamReader fileStream = new StreamReader(FileUpload1.PostedFile.InputStream))
- {
- fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd());
- fileStream.Close();
- }
-
- try
- {
-
- FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftp + ftpFolder + fileName);
- request.Method = WebRequestMethods.Ftp.UploadFile;
-
-
- request.Credentials = new NetworkCredential("UserName", "Password");
- 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();
-
- lblMessage.Text += fileName + " uploaded.<br />";
- response.Close();
- }
- catch (WebException ex)
- {
- throw new Exception((ex.Response as FtpWebResponse).StatusDescription);
- }
- }
این nameSpace ها هم باید اضافه شوند:
- using System.IO;
- using System.Net;
- using System.Text;
تمام!