Use the following code to upload multiple files to FTP.
HTML
<asp:FileUpload ID="FileUpload1" runat="server" AllowMultiple="true" />
<asp:Button Text="Upload to FTP" runat="server" OnClick="FTPUpload" />
<hr />
<asp:Label ID="lblMessage" runat="server" />
C#
Namespaces
using System.IO;
using System.Net;
using System.Text;
Code
protected void FTPUpload(object sender, EventArgs e)
{
//FTP Server URL.
string ftp = "ftp://yourserver.com/";
//FTP Folder name. Leave blank if you want to upload to root folder.
string ftpFolder = "Uploads/";
foreach (HttpPostedFile file in FileUpload1.PostedFiles)
{
byte[] fileBytes = null;
//Read the FileName and convert it to Byte array.
string fileName = Path.GetFileName(file.FileName);
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);
request.Method = WebRequestMethods.Ftp.UploadFile;
//Enter FTP Server credentials.
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);
}
}
}
VB.Net
Namespaces
Imports System.IO
Imports System.Net
Imports System.Text
Code
Protected Sub FTPUpload(sender As Object, e As EventArgs)
'FTP Server URL.
Dim ftp As String = "ftp://yourserver.com/"
'FTP Folder name. Leave blank if you want to upload to root folder.
Dim ftpFolder As String = "Uploads/"
For Each file As HttpPostedFile In FileUpload1.PostedFiles
Dim fileBytes As Byte() = Nothing
'Read the FileName and convert it to Byte array.
Dim fileName As String = Path.GetFileName(file.FileName)
Using fileStream As New StreamReader(file.InputStream)
fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd())
fileStream.Close()
End Using
Try
'Create FTP Request.
Dim request As FtpWebRequest = DirectCast(WebRequest.Create(ftp & ftpFolder & fileName), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.UploadFile
'Enter FTP Server credentials.
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 requestStream As Stream = request.GetRequestStream()
requestStream.Write(fileBytes, 0, fileBytes.Length)
requestStream.Close()
End Using
Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
lblMessage.Text += fileName & " uploaded.<br />"
response.Close()
Catch ex As WebException
Throw New Exception(TryCast(ex.Response, FtpWebResponse).StatusDescription)
End Try
Next
End Sub